#include <stdio.h>
#include <stdlib.h>
typedef struct _node
{
int value;
struct _node *next;
} Node;
int main( void )
{
Node* head = NULL;
for( int number; scanf("%d",&number)==1 && number!=-1; )
{
Node** last = &head;
for( ; *last; last=&(*last)->next );
(*last) = (Node *)malloc( sizeof(Node) );
(*last)->value = number;
(*last)->next = NULL;
}
for( Node *p=head; p; p=p->next )
printf( "%d ", p->value );
return 0;
}
uj5u.com熱心網友回復:
第一次進入for( ; *last; last=&(*last)->next );由于last指向head,head指向NULL,所以不執行for回圈,后面的陳述句讓head指向了第一個節點Node1;第二次進入for( ; *last; last=&(*last)->next )回圈時*last也就是head是指向Node1的,所以會讓last指向最新一節Node1。下面把Node2聯接到Node1上,不應該是 (*last-next) = (Node *)malloc( sizeof(Node) )嗎?uj5u.com熱心網友回復:
不明白為啥要用二級指標,只有一個主函式完全沒有必要這樣。uj5u.com熱心網友回復:
你要想想,進入for(; *last; last=&(*last)->next); 退出回圈的條件是什么?是*last不成立,也就是*last==null,那么*last什么時候會==null?那不就是*last=Node1.next才是null嗎(因為Node1不是null)?所以(*last->next)=malloc是錯的,因為*last已經是null了,*last->next本身就是錯的(相當于null->next),所以,*last=malloc才是正確的。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/211518.html
標籤:C語言
上一篇:問題 此環境變數太大, 此對話框允許將值設定為最長2047個字符 在環境變數path中即添加不了變數,也洗掉不了
