【发布时间】:2021-01-15 08:53:31
【问题描述】:
我的链表代码没有打印最后一个节点,你能帮我解决我的错误吗 我试过做而它不起作用 我不想让头节点分开因此请不要告诉我更改整个代码 我如何释放整个代码的分配内存 最后我如何使用递归进行显示
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data ;
struct node *next;
}node;
int create(int n);
void display(node* head);
int main()
{
int n;
node* HEAD = NULL;
scanf("%d",&n);
HEAD=create(n);
display(HEAD);
return 0;
}
int create(int n)
{
int i;
node * head=NULL;
node * temp=NULL;
node * p = NULL;
for(i=0;i<n;i++)
{
temp =(node*)malloc(sizeof(node));
scanf("%d",&(temp->data));
temp->next= NULL;
if(head==NULL)
{
head=temp;
}
else
{
p=head;
while(p->next != NULL)
{
p=p->next;
}
p->next=temp;
}
}
return head;
}
void display(node* head)
{
node* p= head;
while(p->next != NULL)
{
printf("\n data: %d",p->data);
p=p->next;
}
}
【问题讨论】:
-
我不确定打印最后一个节点是否会出现问题,但请考虑在 display() 中为只有一个元素的列表打印什么(即当 head->next == NULL 时)。
-
您应该真正注意编译器发出的消息。如果它说“警告”,则表示您做错了,下次您的计算机可能会爆炸。
标签: c function linked-list