C语言的简单问题 40分求解!在线等大神!

[复制链接]
查看11 | 回复1 | 2011-5-18 11:22:31 | 显示全部楼层 |阅读模式
完整的函数你可以找我要,现在只贴出一部分。
structstud
{charname[20];
intscore;
structstud*next;
};定义结构体
Student*DeleteSame(Student*head)
{Student*p,*temp,*deletelist[100];
inti=0,j,d;
p=head-next;

if(p==NULL)printf(\"NolistFound,pleaseCreatelist\\n\");

for(;p!=NULL;p=p-next)
for(temp=head;temp!=NULL;temp=temp-next)
        {
        if(strcmp(p-name,temp-name)==0)
        {if(temp==p)gotoX;
                elsedeletelist=p;break;
                X:;
        }
        }

printf(\"Output:listofStudentswithasamename\\n\");
for(j=0;ji;j)
printf(\"%d.%s%d\\n\",j,deletelist[j]-name,deletelist[j]-score);
printf(\"%d.Cancledelete\\n\",i);

printf(\"pleasechooseonetodelete\\npleaseenterthenumber\\n\");
c5:fflush(stdin);
scanf(\"%d\",
if(d=0i)Delete(head,deletelist[d]);
        elseif(d==i)gotoEnd;
                else{printf(\"Wrongnumber,pleasere-enter\\n\");gotoc5;}

End:;
}我写的删除相同姓名的函数。
Student*Reverse(Student*head)
{Student*last,*p,*temp,*head_reverse;
head_reverse=(Student*)malloc(sizeof(Student));

for(last=head;last!=NULL;last=last-next);
head_reverse=last;

for(;head-next!=last;)
{for(p=head;p-next!=last;p=p-next);
last-next=p;
last=p;}

last-next=NULL;
printf(\"ReverseAccompanished...\\n\");
head=head_reverse;
returnhead;
}我写的借点逆序存放函数。
voidDisplay(Student*head)
{
Student*p;
inti;
p=head-next;

if(p!=NULL)
{printf(\"OutputList\\n\");

while(p!=NULL)
{i=0;
for(;i10;i)
{if(p==NULL)gotoEnd;
        printf(\"%s\\t\\t%d\\n\",p-name,p-score);
        p=p-next;}
        system(\"pause\");}

End:printf(\"BottomOfTheList!\\n\");}
}这是显示函数。
这几个函数完全没有问题,运行结果完全正确。
问题是:当我运行一次结点逆序之后再运行删除相同姓名的函数就会什么也没有了。
特求大神解答!不胜感激!
回复

使用道具 举报

千问 | 2011-5-18 11:22:31 | 显示全部楼层
改完可以用了。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行