求助:节点插入单链表无法正常运行

发布于 2022-09-06 19:53:52 字数 1709 浏览 20 评论 0

#include  <stdio.h>
#include  <malloc.h>

struct node
{
  int num;
  struct node* next;
};

/* create LinkList  */
struct node* create(int n);  
{   
   struct node* head,*p;
   p=head=NULL;
   int i;
   for(i=0;i<n;i++)
   {            
      struct node* point=(struct node*)malloc(sizeof(struct node));
      point->num=i;
      if(0==i)
      {
         head=point;
      }
      else
      {
         p->next=point;
      }
         p=point;
         point->next=NULL;
   }
  return head;
}



/*head is LinkList head node , p is input node */
struct node* insert_node(struct node* head , struct node* p)  
{
     if(!head)
     {
       head=p;
       p->next=NULL;
     }
     else
     {
        struct node* p1,*p2;
        p1=head;
        while(p->num > p1->num && p1->next != NULL)
        {
          p2=p1;
          p1=p1->next;
        }

         if(p->num < p1->num)
         {
             if(head==p1)
             {
                head=p;
                p->next=p1;
             }   
             else
             {
                p2->next=p;
                p->next=p1;
             }
          }
          else
          {
                p1->next=p;
                p->next=NULL;
          }
     }



  struct node* foreach;
  for( foreach=head ; foreach!= NULL ; foreach = foreach->next )
  {
       printf("%d\t",foreach->num);
  } 

}

int main()
{
  create(9);
  struct node* pp=(struct node*)malloc(sizeof(struct node));
  pp->num=5;
  insert_node(head,5);
    return 0;
 }

正常运行结果应该是:0 1 2 3 4 5 5 6 7 8, 但目前运行结果是:0 1 2 3 4 5 5,后续的三位数 6 7 8 无法显示出来,请帮助解决,谢谢.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文