head=(LNode *)malloc(sizeof(LNode));這一句不要,沒啥用處,除非你head指向的節點也就是第一個節點的data不需要資料head->next=NULL;這裡修改為head=NULL;讓head先指向NULL,也就是沒有節點其實這個可以不要,再主函式中,先讓連結串列是空連結串列即可(即讓head=NULL)head->data=data; head->next=p->next; head->next=p; 關鍵在這裡你仔細考慮一下,一般來說頭插法的head只是一個指標,不要對head指向的那個節點操作,對p操作完成後,讓head指過去即可所以修改為p->data=data; //賦值過去,因為你現在申請了p的記憶體空間p->next=head; //把head指向的那個節點連線到p的後面,這樣完成頭插 // 這是head沒有用了,p成為連結串列的頭指標head=p; //head再指向這個連結串列的頭部,也就是p指向的節點,為下一次迴圈做準備head=Createlist(head);//連結串列初始化主函式中這樣不太好,建議不要重名
head=(LNode *)malloc(sizeof(LNode));這一句不要,沒啥用處,除非你head指向的節點也就是第一個節點的data不需要資料head->next=NULL;這裡修改為head=NULL;讓head先指向NULL,也就是沒有節點其實這個可以不要,再主函式中,先讓連結串列是空連結串列即可(即讓head=NULL)head->data=data; head->next=p->next; head->next=p; 關鍵在這裡你仔細考慮一下,一般來說頭插法的head只是一個指標,不要對head指向的那個節點操作,對p操作完成後,讓head指過去即可所以修改為p->data=data; //賦值過去,因為你現在申請了p的記憶體空間p->next=head; //把head指向的那個節點連線到p的後面,這樣完成頭插 // 這是head沒有用了,p成為連結串列的頭指標head=p; //head再指向這個連結串列的頭部,也就是p指向的節點,為下一次迴圈做準備head=Createlist(head);//連結串列初始化主函式中這樣不太好,建議不要重名