Для создания связанного списка я сделал новый узел статическим, а не динамическим, и теперь мой цикл функции отображения преобразован в бесконечный цикл. Почему?
Структура узла
#include <stdio.h>
typedef struct node
{
int data;
struct node* next;
}node;
Единственное изменение, которое я сделал, было в этой функции, и оно работало нормально и после изменений.
node * createLinkedList(int n)
{
int i=0;
node * head=NULL;
node * temp=NULL;
node * p=NULL;
for(i=0;i<n;i++)
Я изменил свой код отсюда, где пишется
temp=(node *)malloc(sizeof(node));
Я сделал статический узел "x".
{
node x; // instead of malloc I made a static node.
x.next=NULL;
printf("Enter data in node %d: ",i+1);
scanf("%d",&(x.data));
temp=&x;
if(head == NULL)
{
head=temp;
}
else
{
p=head;
while(p->next != NULL)
{
p=p->next;
}
p->next=temp;
}
}
return head;
}
Это функция отображения, где изменения вызвали проблему
void display(node * p)
{
node * temp=p;
Именно здесь преобразуется в бесконечный цикл.
while(temp->next != NULL)
{
printf("\t%d->",temp->data); //Due to static node this became an infinite loop , Why?
temp=temp->next;
}
}
Почему так происходит, когда эта программа работала нормально, когда я динамически выделял память, но после создания статического узла в качестве нового узла создается бесконечный цикл ???