永发信息网

帮我看看下面的双链表问题,不知道为什么不能全部输出

答案:1  悬赏:10  手机版
解决时间 2021-08-21 15:08

#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
struct node
{
 int num;
 node*next;
 node*piror;
};
node*creat(int n)  //creat the nodes;
{
 node*head,*p1,*p2;
 int i;
 if(n==0)
 {
  printf("no node is found;\n");
  head=NULL; //no node;
 }
  else
  {
   if(n==1)
   {
    printf("only one node exsit,please input the data to the node:");
    head=(node*)malloc(sizeof(node));
    scanf("%d",&head->num);
    head->next=head;
    head->piror=head;
    
   }
   else
   {
    head=p2=p1=(node*)malloc(sizeof(node));
    for(i=0;i<n;++i)
    {  

     printf("please input the data to the node:");
     scanf("%d",&p1->num);
     p1=(node*)malloc(sizeof(node));
     p2->next=p1;
     p1->piror=p2;
     p2=p1;
    }
    p2->next=head;
    head->piror=p2;

   }
  }
  return head;
}
node*display(node*head)  //print out the nodes;
{
 node*p1;
 p1=head;
 if(p1==NULL)
 {
  printf("no any nodes;\n");
 }
  else
  {
   printf("Here are the information of the nodes:");
   printf("\n");
   do
   {
    printf("%d  ",p1->num);
    p1=p1->next;
   }
   while(p1->next!=head);
  }
  return head;
}
node*sort(node*head)  //sort the nodes;
{
 node*p1,*p2,*small;
 int temp;
 for(p1=head;p1->next!=head;p1=p1->next)
 {
  small=p1;//

  for(p2=p1->next;p2->next!=head;p2=p2->next)
  {
   if(p2->num<small->num)
   {
    small=p2;
   }
  }
     if(small!=p1)
   {
    temp=p1->num;
    p1->num=small->num;
    small->num=temp;
   }
 }
 return head;
}
node *insert(node*head,int num)  //
{
 node*p1,*p2,*p3,*p4;;
 p3=(node*)malloc(sizeof(node));//
 p3->num=num;//
 p1=head;//
 p2=p1->next;
 p4=head;
 while(p4!=head)
 {
  p4=p4->next;  //the node is tail's node;
 }
 // judge the head;
  if(p3->num>=head->num)
  {
   p3->next=head;
   p1->next=p3;
   head->piror=p3;
   p3->piror=p1;
   head=p3;
   return head;
   //
  }
  do
 {
  if(p3->num>p1->num&&p3->num<p2->num)
  {
   p1->next=p3;
   p3->next=p2;
   p3->piror=p1;
   p2->piror=p3;
   return head;
  }
  p1=p1->next;
  p2=p1->next;
 }while(p2->next!=head);

 // judge the tail node;
 if(p3->num>=p4->num)
 {
  p3->piror=p1;
  head->piror=p3;
  p1->next=p3;
  p3->next=head;
  return head;
 }
return head;
}
void main()
{
 node*p,*p1,*p2;
 printf("please input the account of the node:");
 int n;
 scanf("%d",&n);
 printf("\n");
 p=creat(n);//***  node*p;
 printf("After displaying is:\n");
 display(p);
 printf("\n");
 printf("After sorting is:");
 printf("\n");
 p1=sort(p); //****
 display(p1);
 printf("\n");
 int num;//the num that will be inserted into the linkedlist;
 printf("please input the data to the node that is inserted into the linkedlist:\t");
 scanf("%d",&num);
 p2=insert(p1,num);
 printf("\n");
 printf("After inserting ,the nodes are: \n");
 display(p2);
 printf("\n");
}
    


..

高手帮忙解答一下

最佳答案
一个很小的错误: if(p3->num<=head->num)//是小于
  {
   p3->next=head;
   p1->next=p3;
   head->piror=p3;
   p3->piror=p1;
   head=p3;
   return head;
   //
  }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
义马市三门峡阳光小吃地址在哪,我要去那里
热血传奇之挖宝
外国开发商开发的游戏被中国代理是不是完全脱
怎样玩QQ旋舞升级最快?
江西大广高速2986公里
龙江县齐齐哈尔韵鸿美发设计这个地址在什么地
介绍自己的作文的评语,作文评语。
显卡128mb能玩名将三国吗
电信网络有哪些,新路由器里的配件有什么
电脑没有声音。怎么办
感叹友谊疏远的古诗句,关于友情的古诗句我知
我买得单机游戏装上怎么玩不成呢
有啥新的好听的歌?
家里摩托车爆缸 是怎么回事
数字的繁体我
推荐资讯
重庆三峡职业学院在主城区吗
白居易关于七月的诗句,描写七月景色的句子
衣服上有铁锈怎么办,地板上有铁锈怎么清洗我
1.已知某子网某主机IP地址:202.98.45.218
嗓子痛怎么办啊?
南海区佛山燕子专业美容泰式洗发城哪位知道具
敬业与乐业的佳句赏析,敬业与乐业的名言
活塞环开口的分布 ,是带组合油环的那种
护士在给病人给氧过程中应注意什么
为什么、世界上会有这么复杂的感情,放下一切
为什么我的电脑QQ农场牧场进不去?
2010年6月音乐榜
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?