Я выполнял программу со связанными списками ниже, но этот код ведет себя неожиданным образом, когда я сравнивал head с NULL, он не выполняет блок if () и достигает блока else, но внутри условия if (), если я помещаю оператор вроде printf (""); и после того, как я запустил программу при сравнении блока head == Null if (), будет выполнен. Я попробовал еще одну модификацию, если я удалил head = new; из другой части, а также удален оператор printf (""), тогда выполняется условие if (), я не могу понять, почему он ведет себя таким образом, кто-нибудь может мне сказать. Спасибо
#include<stdio.h>
#include<conio.h>
struct node
{
struct node *prev;
int data;
struct node *next;
};
struct node *head;
void createB(int item)
{
struct node *newnode = (struct node *)malloc(sizeof(struct node));
newnode->prev=NULL;
newnode->next=NULL;
newnode->data=item;
if(head==NULL) //upon compairing it reaches to else
//block i debugged in turbo c as well and head is NULL
{
head = newnode;
}
else
{
newnode->next=head;
head->prev=newnode;
head=newnode;
}
}
main()
{
createB(2);
}