c-分段故障



将节点添加到升序链表中

我在这里看到了一些类似的东西,但对我没有帮助。所以请纠正我哪里错了。

        #include<stdio.h>
        #include<stdlib.h>
        struct node
        {
          int data;
          struct node* link;
        };
         struct node* head = NULL;
        void add(int);
        void print();
        int main()
        {
          add(1); print();
          add(2); print();
          add(5); print();
          add(4); print();
          add(3); print();
        return 0;
        }
***/* if list is empty or if new node is to be inserted before the first node*/***
         void add( int num)
        {  
           struct node* temp;
           temp =  head;
           struct node* newNode = (struct node*)malloc(sizeof(struct node));
           newNode->data = num;
           newNode->link = NULL;
           if((head == NULL)||( head->data > num))
               {
                 newNode->link = head;
                 head = newNode;
               }
           else
              {
  ***/* traverse the entire linked list to search the position to insert the new node*/***
               while(temp!=NULL)
               {
                if(temp->data <= num && ( temp->link->data > num || temp->link == NULL))
                    {
                       newNode->link = temp->link;
                       temp->link = newNode;
                       return;
                    }
                  temp= temp->link;
                }
               }
             }
    ***/*Display the content of the linked list*/***    
          void print()
        {
           struct node* temp;
           temp = head;
           while(temp!=NULL)
            {
              printf("%d", temp->data);
              temp=temp->link;
            }
           printf("n");
        }

运行此代码时,o/p为:

1

分段故障(堆芯转储(

请帮助我,如何解决这个问题

罪魁祸首是这行:

if(temp->data <= num && ( temp->link->data > num || temp->link == NULL))

在评估temp->link之前,您没有检查它是否不是NULL。请将其更改为:

if(temp->data <= num && ( temp->link == NULL || temp->link->data > num))

利用短路评估使其安全。

相关内容

  • 没有找到相关文章

最新更新