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