Связанный список C неожиданное поведение программы в условном операторе - PullRequest
0 голосов
/ 29 мая 2020

Я выполнял программу со связанными списками ниже, но этот код ведет себя неожиданным образом, когда я сравнивал 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);
      }
...