• 比较学号大小建立双向链表
  • 其它
    1.00元

typedef struct xueshengzheng
{

char xuehao[20];

struct xueshengzheng *Next;

struct xueshengzheng *Last;

}*hData,Data;

struct xueshengzheng *head;

head=(hData)malloc(sizeof(struct xueshengzheng));

   head->Next=NULL;

while(1)

{
hData p2=NULL,p1;
p1=&head;
p2=(hData)malloc(sizeof(struct xueshengzheng)); //录入信息的结点
scanf("%s",p2->xuehao);
if(strcmp(p2->xuehao,"00000000")==0)
break;
p2->Next=NULL;
 if(head->Next==NULL)  //头节点的连接
 {
    head->Next=p2;  
    p2->Last=head;
 }
 else
 {
   while((p1->Next!=NULL)&&(strcmp(p2->xuehao,p1->Next->xuehao)>0)) //判定结点连接位置
   {
        p1=p1->Next;
   }
   if((strcmp(p2->xuehao,p1->xuehao)<0)&&(p1->Next!=NULL))//如果链表出现比新结点小的学号则将新结点连接
   {
   p2->Next=p1->Next;
   p1->Next->Last=p2;
   p1->Next=p2;
   p2->Last=p1;
   printf("u");
   }
   if(p1->Next==NULL)  //如果链表到达末尾,则直接连接结点
   {
    p1->Next=p2;
    p2->Last=p1;

   }
  }
}

各位大佬,可以看看我这个根据学号建立的双向链表有什么问题吗。。。改了一天了,还是没改出来,真的大脑有点乱,请各位大佬高抬贵手了~~~谢谢大佬们。


  • Willson1991    2020-03-13 15:29:03
  • 阅读 956    收藏 0    回答 1
  • 邀请
  • 收藏
  • 分享
发送
登录 后发表评论
  • 51testing软件测试圈微信