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