我制作了一个简单链接列表的程序,在此我正在打印链表中的值时,它进入无限循环。 我特此附上代码。 我已经将temp1用于遍历目的。 '一个'用于存储头节点的地址。 '温度'用于创建新节点。
// Creating a menu deriv en program of single link list
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct node{
int data;
struct node *next;
};
void main()
{
struct node *a;
char ch;
struct node *temp;
struct node *temp1;
a=NULL;
clrscr();
do
{
if(a==NULL)
{
temp=(struct node*)malloc(sizeof(struct node));
printf("Enter Data");
scanf("%d",&temp->data);
temp->next=NULL;
a=temp;
}
else
{
temp=(struct node*)malloc(sizeof(struct node));
printf("Enter data element");
scanf("%d",&temp->data);
temp1=a;
while(temp1->next!=NULL)
{
temp1=temp1->next;
}
temp1->next=temp;
}
printf("Do You Wish to continue");
ch=getch();
}
while(ch=='Y'||ch=='y');
printf("Status of the link list");
temp1=a;
while(temp1!=NULL)
{
printf("%d ",temp1->data);
temp1->next=temp1;
}
getch();
}
请帮助!!!
答案 0 :(得分:0)
在你的代码中你犯了两个错误。
第一个错误
进入else
块后,你没有将新创建的节点的next
指针设置为NULL
。所以你的代码应该是这样的......
else
{
temp=(struct node*)malloc(sizeof(struct node));
temp->next=NULL;
printf("Enter data element");
scanf("%d",&temp->data);
temp1=a;
while(temp1->next!=NULL)
{
temp1=temp1->next;
}
temp1->next=temp;
}
第二个错误
在尝试打印链表时,在while loop
内部遍历指针的进展是错误的。所以打印linked list
的代码应该是这样......
while(temp1!=NULL)
{
printf("%d ",temp1->data);
temp1=temp1->next;
}
尝试通过在纸上绘制情况来可视化情况,然后你会更清楚。