无法打印列表的最后一个元素

时间:2014-01-10 10:00:51

标签: c linked-list

我正在尝试制作链接列表,但无法打印最后一个元素,或者可能无法添加最后一个元素。我正在使用指针方法的指针,但一直与它混淆。该列表应显示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;
}

2 个答案:

答案 0 :(得分:2)

当下一个元素为NULL时,您将停止。当前的一个为NULL时停止:

while (current) { … }

答案 1 :(得分:1)

循环应该是:

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

你不能使用'new'作为变量名,因为它是保留字

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;
}