2014-01-10 62 views
0

我想做一個鏈接列表,但無法打印最後一個元素,或者可能無法添加最後一個元素。我正在使用指針方法的指針,但一直對它感到困惑。該列表應顯示6,但只能達到5.無法打印列表的最後一個元素

#include<stdio.h> 
#include<stdlib.h> 

struct node 
{ 
int data; 
struct node *next; 
}; 

void push(struct node**,int); 

int main() 
{ 
struct node* head=NULL; 
struct node* tail=NULL,*current=NULL; 
push(&head,1); 
current=head; 

tail=head; 
for(int i=2;i<7;i++) 
    { 
     push(&tail->next,i); 

     tail=tail->next; 

    } 
    current=head; 
    while(current->next!=NULL) 
    { 
     printf("\n%d--\n",current->data); 
     current=current->next; 

    } 
return 0; 
} 

void push(struct node** headref,int inp) 

{ 
struct node* new=NULL; 
new=malloc(sizeof(struct node)); 
new->data=inp; 
new->next=*headref; 
*headref=new; 
} 

回答

1

循環應該是:

while(current!=NULL) 
{ 
    printf("\n%d--\n",current->data); 
    current=current->next; 
} 

而且你不能使用「新」作爲變量名,因爲它是保留字

void push(struct node** headref,int inp) 
{ 
    struct node* temp=NULL; 
    temp=(node*)malloc(sizeof(struct node)); 
    temp->data=inp; 
    temp->next=*headref; 
    *headref=temp; 
} 
+0

哦,謝謝!現在工作正常!哇,快速回應。 – user3181231

+0

哈哈......我用g ++編譯了代碼。 – Brightshine

2

當下一個元素爲NULL時停止。停止在當前一個爲NULL,而不是:

while (current) { … } 
+0

非常感謝,它工作。但是它是如何自動停止而不提供任何條件的。我應該更多地瞭解循環。 – user3181231

+1

'current'是條件。如果'current'是空指針並且傳遞任何其他值,則'while'失敗。一般來說,雖然傳遞任何非零值(1,3.4,一個有效的指針,「你好」)。實際上,諸如'while(x

相關問題