[問題] linked list輸出的小小問題..
遇到的問題: (題意請描述清楚)
我想請問一下,我的程式到哪邊邏輯寫錯啊>_<
為啥輸入項數是3,卻要輸入4個數字(ex多輸入5),而且 為啥第一個會跑出0出來
看了蠻久了= =" 找不出到底哪兒 錯了...
所以上來po文 請教大大們 謝謝
程式跑出來的錯誤結果:
請輸入要插入的項數3
2
3
6
5
0 2 3 6 請按任意鍵繼續 . . .
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
DEV-C++
有問題的code: (請善用置底文標色功能)
#include<stdio.h>
#include<stdlib.h>
typedef struct ListNode{
int data;
struct ListNode *link;
}NodePtr;
void CreatNode(NodePtr **p,int n)
{
NodePtr *head, *tail;
head=tail=(NodePtr*)malloc(sizeof(NodePtr));
int i;
for(i=0; i<n; i++)
{
tail->link=(NodePtr*)malloc(sizeof(NodePtr));
tail=tail->link;
scanf("%d ",&(tail->data));
}
tail->link=NULL;
*p=head;
head=head->link;
//free(p);
}
void PrintList(NodePtr *p1)
{
while(p1 != NULL){
printf("%d ",(p1->data));
p1=p1->link;
}
}
void FreeList(NodePtr *p2)
{
NodePtr *pNext=NULL;
while(p2 != NULL){
pNext=p2->link;
free(p2);
p2=pNext;
}
}
int main()
{
NodePtr *p=NULL;
printf("請輸入要插入的項數");
int n;
scanf("%d",&n);
CreatNode(&p,n);
PrintList(p);
FreeList(p);
system("pause");
return 0;
}
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.171.62.247
→
08/06 22:22, , 1F
08/06 22:22, 1F
→
08/06 22:23, , 2F
08/06 22:23, 2F
→
08/06 22:30, , 3F
08/06 22:30, 3F
那二行改成
head=head->link;
*p=head;
結果就正確了耶,因為PrintList那邊是用p去print的...
之前的寫法多一個首節點,所以印出來是會多一個 0 ....不知這樣的解釋對不對>_<
※ 編輯: GZ79 來自: 218.171.62.247 (08/06 22:46)
→
08/06 22:48, , 4F
08/06 22:48, 4F
→
08/06 22:48, , 5F
08/06 22:48, 5F
→
08/06 22:48, , 6F
08/06 22:48, 6F
→
08/06 22:48, , 7F
08/06 22:48, 7F
→
08/06 22:50, , 8F
08/06 22:50, 8F
→
08/06 22:51, , 9F
08/06 22:51, 9F
→
08/06 22:54, , 10F
08/06 22:54, 10F
→
08/06 22:55, , 11F
08/06 22:55, 11F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章