| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1220 人关注过本帖
标题:[求助]链表问题
取消只看楼主 加入收藏
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
 问题点数:0 回复次数:8 
[求助]链表问题

需要帮忙的是------------------红色的那段函数
我需要解决的问题------------注释是用蓝色的那里
我只想把这程序做得完美一点,太垃圾了,不要笑我噢,偶的心灵太弱小了

谢谢~~~~~~~~~~谢谢~~~~~~~~



#include <iostream>

using namespace std;


void gm()
{

cout<<"\n\n\n\t----------------------功能提示-----------------------\n";
cout<<"\t 1.在学生成绩表中,插入一名学生的信息,请输入“1”.\n";
cout<<"\t 2.查看一名学生的相关信息,请输入“2”.\n";
cout<<"\t 3.删除一名学生的所有信息,请输入“3”.\n";
cout<<"\t 4.查看学生成绩表中,所有学生的信息,请输入“4”.\n";
cout<<"\t 5.删除整个学生成绩表,请输入“5”.\n";
cout<<"\t 6.退出功能选项,请输入“6”.\n";
cout<<"\t-------------------------------------------------------\n\n\n";

}

void xsxcts() /*学生信息输入提示*/
{
cout<<"\n\t----------------------学生信息输入提示-----------------------\n";
cout<<"\t 1.输入的学号必须在20位数以内.\n";
cout<<"\t 2.输入的学生成绩不得小于0分或都大于120分.\n";
cout<<"\t 3.输入完一个项目时,请按回车,以便对下一信息的输入.\n";
cout<<"\t 4.输入“exit”,则结束对学生的相关信息的输入.\n\n";
cout<<"\t 例如:\n";
cout<<"\t 请输入第1学生的学号:1001 回车\n";
cout<<"\t 请输入第1学生的姓名:王明 回车\n";
cout<<"\t 请输入第1学生的数学成绩:80 回车\n";
cout<<"\t 请输入第1学生的英语成绩:90 回车\n";
cout<<"\t 请输入第2学生的学号:1003 回车\n";
cout<<"\t 请输入第2学生的姓名:小刚 回车\n";
cout<<"\t 请输入第2学生的数学成绩:70 回车\n";
cout<<"\t 请输入第2学生的英语成绩:80 回车\n";
cout<<"\t | \n";
cout<<"\t | \n";
cout<<"\t 请输入第N学生的学号:exit 回车\n";
cout<<"\t--------------------------------------------------------------\n\n\n";
}


struct student
{
char no[100];
char name[100];
int math,eng;
double ave;
struct student *next;
};

student *jlxslb() /*建立学生成绩链表*/
{
student *head,*p,*pt;
char no[20],a[5]="exit";
int j=1,f,h;
xsxcts(); /*学生信息输入提示*/
cout<<"--------------------------------------------------------------\n";
head=0;
cout<<"请输入第"<<j<<"学生的学号:";
cin>>no;
f=strlen(no);
while(f>20)
{
cout<<"你输入的学号长度,超过了规定的范围内!!\n请重新输入该学生的学号:";
cin>>no;
f=strlen(no);
}
if(strcmp(no,a)==0)
{
cout<<"\n\n\t--------------学生成绩表为空--------------\n\n";
exit(0);
}
while(strcmp(no,a)!=0)
{
p=new student;
strcpy(p->no,no);
cout<<"请输入第"<<j<<"学生的姓名:";
cin>>p->name;
h=strlen(p->name);
while(h>8)
{
cout<<"你输入的学生姓名,超过了规定的范围内!!\n请重新输入该学生的姓名:";
cin>>p->name;
h=strlen(p->name);
}
cout<<"请输入第"<<j<<"学生的数学成绩:";
cin>>p->math;
while(p->math<0||p->math>120)
{
cout<<"-----你输入的数学成绩有误!!请重新输入!!-----\n";
cout<<"请输入该学生的数学成绩:";
cin>>p->math;
}
cout<<"请输入第"<<j<<"学生的英语成绩:";
cin>>p->eng;
while(p->eng<0||p->eng>120)
{
cout<<"-----你输入的英语成绩有误!!请重新输入!!-----\n";
cout<<"请输入该学生的英语成绩:";
cin>>p->eng;
}

if(head==0)
{
head=p;
pt=p;
}
else
{
pt->next=p;
pt=p;
}
cout<<"请输入第"<<++j<<"学生的学号:";
cin>>no;
f=strlen(no);
while(f>20)
{
cout<<"你输入的学号长度,超过了规定的范围内!!\n请重新输入该学生的学号:";
cin>>no;
f=strlen(no);
}
}
cout<<"--------------------------------------------------------------\n";
pt->next=0;
return head;
}

student *jsxscj(student *head) /*计算学生成绩的平均分*/
{
student *p=head;
while(p!=0)
{
p->ave=(p->math+p->eng)/2.0;
p=p->next;
}
return head;
}


void scxslb(student *head) /*输入所有学生的信息*/
{
student *p=head;
cout<<"\n\n\t\t\t学生成绩表\n";
cout<<"\t学号"<<"\t姓名"<<"\t数学"<<"\t英语"<<"\t平均分\n";
while(p!=0)
{
cout<<"\t"<<p->no<<"\t"<<p->name<<"\t "<<p->math<<"\t "<<p->eng<<"\t "<<p->ave<<endl;
p=p->next;
}
}


student *crxsxc(student *head) /*插入一名学生信息*/
{
student *p,*x;
char no[100];
int f,h;
x=new student;
cout<<"请输入该学生的学号:";
cin>>x->no;
f=strlen(x->no);
while(f>20)
{
cout<<"你输入的学号长度,超过了规定的范围内!!\n请重新输入该学生的学号:";
cin>>x->no;
f=strlen(x->no);
}
cout<<"请输入该学生的姓名:";
cin>>x->name;
h=strlen(x->name);
while(h>8)
{
cout<<"你输入的学生姓名,超过了规定的范围内!!\n请重新输入该学生的姓名:";
cin>>x->name;
h=strlen(x->name);
}
cout<<"请输入该学生的数学成绩:";
cin>>x->math;
while(x->math<0||x->math>120)
{
cout<<"-----你输入的数学成绩有误!!请重新输入!!-----\n";
cout<<"请输入该学生的数学成绩:";
cin>>x->math;
}
cout<<"请输入该学生的英语成绩:";
cin>>x->eng;

while(x->eng<0||x->eng>120)
{
cout<<"-----你输入的英语成绩有误!!请重新输入!!-----\n";
cout<<"请输入该学生的英语成绩:";
cin>>x->eng;
}
x->ave=(x->math+x->eng)/2.0;
p=head;
cout<<"*********请输入你想在那位学生的学号后插入该学生的信息:";
cin>>no;
while(p!=0)
{
if(strcmp(p->no,no)==0)
{
x->next=p->next;
p->next=x;
scxslb(head); /*输入所有学生的信息*/
return head;
}
p=p->next;
}
cout<<"\n*********没有该学生的学号或者你的输入有误*********\n";
return head;
}

student *ckxsxc(student *head) /*查看一名学生信息*/
{
student *p;
int f;
char no[100];
cout<<"请输入你要查看学生的学号:";
cin>>no;
f=strlen(no);
if(f>20)
{
cout<<"**********你输入的学号长度,超过了规定的范围内**********\n";
return head;
}
p=head;
while(p!=0)
{
if(strcmp(p->no,no)==0)
{
cout<<"\t学号"<<"\t姓名"<<"\t数学"<<"\t英语"<<"\t平均分\n";
cout<<"\t"<<p->no<<"\t"<<p->name<<"\t "<<p->math<<"\t "<<p->eng<<"\t "<<p->ave<<endl;
return head;
}
p=p->next;
}
cout<<"**********没有你要查看学生的学号,或者你的输入有误*********\n";
return head;
}

student *scxsc(student *head) /*删除一名学生信息*/
{
student *p,*pc;
int f;
char no[100];
cout<<"请输入你要删除学生的学号:";
cin>>no;
f=strlen(no);
if(f>20)
{
cout<<"**********你输入的学号长度,超过了规定的范围内**********\n";
return head;
}
p=pc=head;
if(strcmp(p->no,no)==0)
{
head=p->next;
delete p; /*使用这条语句时,在执行别的功能,程序崩溃; 若不使用这条语句,执行别的功能时,
删除的第一位学生信息,还会显示出来*/
scxslb(head); /*输入所有学生的信息*/
return head;
}

while(p!=0)
{
if(strcmp(p->no,no)==0)
{
p->next=p->next->next; /*我要删除指定的一位学生的信息,但它删除的是下一位学生的信息.请在不改动该函数的格式下
帮我使用其他的方法看一下,谢谢了啵*/


scxslb(head); /*输入所有学生的信息*/
return head;
}
p=p->next;

}

cout<<"\n******没有该学生的学号或者你的输入有误!******\n";
return head;

}

void scxscjb(student *head) /*删除学生成绩表*/
{
student *p;
p=head;
while(head)
{
head=p->next;
delete p;
p=head;
}
cout<<"\n\n*********学生成绩表以为空*********\n\n";
exit (0);
}

int main(void)
{
student *head;
char i[1];
char s0[2]="0",s1[2]="1",s2[2]="2",s3[2]="3",s4[2]="4",s5[2]="5",s6[2]="6";
head=jlxslb(); /*建立学生成绩链表*/
jsxscj(head); /*计算学生成绩的平均分*/
scxslb(head); /*输入所有学生的信息*/
gm();
cout<<"请选择功能:";
cin>>i;
if(strcmp(i,s6)==0)
{
cout<<"\t\t*********你已退出功能选项*********\n";
exit(0);
}
while((strcmp(i,s0)<0)||(strcmp(i,s6)>0))
{
cout<<"\n-------你输入的功能值有误,请参考《功能提示》-------\n请选择功能:";
cin>>i;
}
while(strcmp(i,s0)>0&&strcmp(i,s6)<0)
{
if(strcmp(i,s1)==0)
crxsxc(head); /*插入一名学生信息*/
if(strcmp(i,s2)==0)
ckxsxc(head); /*查看一名学生信息*/
if(strcmp(i,s3)==0)
scxsc(head); /*删除一名学生信息*/
if(strcmp(i,s4)==0)
scxslb(head); /*查看所有的学生信息*/
if(strcmp(i,s5)==0)
scxscjb(head); /*删除学生成绩表*/
cout<<"请选择功能:";
cin>>i;
if(strcmp(i,s6)==0)
{
cout<<"\t\t*********你已退出功能选项*********\n";
exit(0);
}
while((strcmp(i,s0)<0)||(strcmp(i,s6)>0))
{
cout<<"\n-------你输入的功能值有误,请参考《功能提示》-------\n请选择功能:";
cin>>i;
}
}
getchar();
return 0;
}

搜索更多相关主题的帖子: 链表 
2006-06-17 11:17
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 

偶把它改成下面这样子


student *scxsc(student *head) /*删除一名学生信息*/
{
student *pa,*pc;
int f;
char no[100];
cout<<"请输入你要删除学生的学号:";
cin>>no;
f=strlen(no);
if(f>20)
{
cout<<"**********你输入的学号长度,超过了规定的范围内**********\n";
return head;
}
pa=pc=head;
if(strcmp(pc->no,no)==0)
{
pc=pc->next;
head=pc;
delete pc; /*使用这条语句时,在执行别的功能,程序崩溃; 若不使用这条语句,执行别的功能时,
删除的第一位学生信息,还会显示出来*/


scxslb(head); /*输入所有学生的信息*/
return head;
}

else
{
while(strcmp(pc->no,no)!=0)
{
pa=pc;
pc=pc->next;
}
if(pc==NULL)
{
cout<<"\n******没有该学生的学号或者你的输入有误!******\n";
return head;
} /*当输入一个不存在的学号时,这复合语句执行不了*/
else
{
pa->next=pc->next;
delete pc;
scxslb(head); /*输入所有学生的信息*/
return head;
}
}
}

2006-06-17 11:26
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 

偶是第一次自学的`~ 现在学到类的继承~ 不过没有老师教~~不怎么懂得灵活用运`~这几天我想把程序做得完善一点`~
在把这程序转换为类的格式`以前我们学过c语言,不过学校只让我们学了一个学期,就学了c语言前面六章(学到数组那里),后来自己就自学,凭着老师教的那点基础,我学完了C语言,现在转业自学C++了,不过见课本学链表那文章说得太垃圾了``只提了一点点`~自己就想巩固一下这章的知识~所以就编了自己第一次这么长的程序~我知道这程序还可以简化的,程序长并不是件好事;本来这程序我以前是做好了的``不过放在MP3里面,忘了存入电脑里面,后来MP3崩溃了,用了半个月的课余时间写的这程序代码也不见了,还有里面一些收积来的编程资料全不见了,人都有点崩溃了,后面想想只有一切在重新来过,才能补回来;现在就是那段函数,解决不了了,脑子没有以前那样灵活了,我知道可能是最近想这方面太多了,所以现在只能传上来,请求各位帮帮忙了;我也加有几个C++讨论QQ群,发到那里,请求帮且时,别人都是爱理不理的,根本没有人理我,大概是不熟悉吧!伤心啊!  
  我想和我一样自学的朋友们,都希望在自己遇到问题时,请求别人帮助,
  会有个高手指点一下我们,或者带一下我们
不好意思噢!这几天实在太郁闷了!在这里哆嗦了几句心里话!抱歉抱歉!

言归正传__
head=pc->next;
delete pc;
/*使用这条语句时,在执行别的功能,程序崩溃; 若不使用这条语句,执行别的功能时,
删除的第一位学生信息,还会显示出来*/

思路好不清晰
else
{
while(strcmp(pc->no,no)!=0)
{
pa=pc;没有用
pc=pc->next;
}
这是废话,上面IF不成立,就是while条件。
if(pc==NULL)
把尾节点当NULL了么
while(strcmp(pc->no,no)!=0&&pc!=NULL)加个条件

下面的else去掉
              改了,还是不对,在删除链表中不存在的学号时,程序还是崩溃,有QQ么,在QQ里面让我用"远程协助",操作让你看一下,或许那样子,你就清楚我的思路,和我要解决的问题了;

2006-06-18 09:48
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 

还是出错``` 当执行一次删除第一个学生的学号时~~在执行"查看全部的学生信息"功能时`
程序崩溃`~
if(strcmp(pc->no,no)==0)
{
head=pc->next;
delete pc; /*使用这条语句时,在执行别的功能,程序崩溃; 若不使用这条语句,执行别的功能时,
删除的第一位学生信息,还会显示出来*/

scxslb(head); /*输入所有学生的信息*/
return head;
}


就差这一点了`~这程序就完善了``

2006-06-18 21:36
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 

晕噢!!! 发错了程序~不过两个程序也差不多一样的`~ 这个程序才是让我满意一点的` 我用你们帮我修改的代码添加进去~~ 现在程序就是这样`~不过还是老问题~~唉~~~
#include <iostream>

using namespace std;

void gm()
{

cout<<"\n\n\n\t----------------------功能提示-----------------------\n";
cout<<"\t 1.在学生成绩表中,插入一名学生的信息,请输入“1”.\n";
cout<<"\t 2.查看一名学生的相关信息,请输入“2”.\n";
cout<<"\t 3.删除一名学生的所有信息,请输入“3”.\n";
cout<<"\t 4.查看学生成绩表中,所有学生的信息,请输入“4”.\n";
cout<<"\t 5.删除整个学生成绩表,请输入“5”.\n";
cout<<"\t 6.退出功能选项,请输入“6”.\n";
cout<<"\t-------------------------------------------------------\n\n\n";

}

void xsxcts() /*学生信息输入提示*/
{
cout<<"\n\t----------------------学生信息输入提示-----------------------\n";
cout<<"\t 1.输入的学号必须在20位数以内.\n";
cout<<"\t 2.输入的学生成绩不得小于0分或都大于120分.\n";
cout<<"\t 3.输入完一个项目时,请按回车,以便对下一信息的输入.\n";
cout<<"\t 4.输入“exit”,则结束对学生的相关信息的输入.\n\n";
cout<<"\t 例如:\n";
cout<<"\t 请输入第1学生的学号:1001 回车\n";
cout<<"\t 请输入第1学生的姓名:王明 回车\n";
cout<<"\t 请输入第1学生的数学成绩:80 回车\n";
cout<<"\t 请输入第1学生的英语成绩:90 回车\n";
cout<<"\t 请输入第2学生的学号:1003 回车\n";
cout<<"\t 请输入第2学生的姓名:小刚 回车\n";
cout<<"\t 请输入第2学生的数学成绩:70 回车\n";
cout<<"\t 请输入第2学生的英语成绩:80 回车\n";
cout<<"\t | \n";
cout<<"\t | \n";
cout<<"\t 请输入第N学生的学号:exit 回车\n";
cout<<"\t--------------------------------------------------------------\n\n\n";
}


struct student
{
char no[100];
char name[100];
int math,eng;
double ave;
struct student *next;
};

student *jlxslb() /*建立学生成绩链表*/
{
student *head,*p,*pt;
char no[20],a[5]="exit";
int j=1,f,h;
xsxcts(); /*学生信息输入提示*/
cout<<"--------------------------------------------------------------\n";
head=0;
cout<<"请输入第"<<j<<"学生的学号:";
cin>>no;
f=strlen(no);
while(f>20)
{
cout<<"你输入的学号长度,超过了规定的范围内!!\n请重新输入该学生的学号:";
cin>>no;
f=strlen(no);
}
if(strcmp(no,a)==0)
{
cout<<"\n\n\t--------------学生成绩表为空--------------\n\n";
exit(0);
}
while(strcmp(no,a)!=0)
{
p=new student;
strcpy(p->no,no);
cout<<"请输入第"<<j<<"学生的姓名:";
cin>>p->name;
h=strlen(p->name);
while(h>8)
{
cout<<"你输入的学生姓名,超过了规定的范围内!!\n请重新输入该学生的姓名:";
cin>>p->name;
h=strlen(p->name);
}
cout<<"请输入第"<<j<<"学生的数学成绩:";
cin>>p->math;
while(p->math<0||p->math>120)
{
cout<<"-----你输入的数学成绩有误!!请重新输入!!-----\n";
cout<<"请输入该学生的数学成绩:";
cin>>p->math;
}
cout<<"请输入第"<<j<<"学生的英语成绩:";
cin>>p->eng;
while(p->eng<0||p->eng>120)
{
cout<<"-----你输入的英语成绩有误!!请重新输入!!-----\n";
cout<<"请输入第该学生的英语成绩:";
cin>>p->eng;
}

if(head==0)
{
head=p;
pt=p;
}
else
{
pt->next=p;
pt=p;
}
cout<<"请输入第"<<++j<<"学生的学号:";
cin>>no;
f=strlen(no);
while(f>20)
{
cout<<"你输入的学号长度,超过了规定的范围内!!\n请重新输入该学生的学号:";
cin>>no;
f=strlen(no);
}
}
cout<<"--------------------------------------------------------------\n";
pt->next=0;
return head;
}

student *jsxscj(student *head) /*计算学生成绩的平均分*/
{
student *p=head;
while(p!=0)
{
p->ave=(p->math+p->eng)/2.0;
p=p->next;
}
return head;
}


void scxslb(student *head) /*输入所有学生的信息*/
{
student *p=head;
cout<<"\n\n\t\t\t学生成绩表\n";
cout<<"\t学号"<<"\t姓名"<<"\t数学"<<"\t英语"<<"\t平均分\n";
while(p!=0)
{
cout<<"\t"<<p->no<<"\t"<<p->name<<"\t "<<p->math<<"\t "<<p->eng<<"\t "<<p->ave<<endl;
p=p->next;
}
}


student *crxsxc(student *head) /*插入一名学生信息*/
{
student *p,*x;
char no[100];
int f,h;
x=new student;
cout<<"请输入该学生的学号:";
cin>>x->no;
f=strlen(x->no);
while(f>20)
{
cout<<"你输入的学号长度,超过了规定的范围内!!\n请重新输入该学生的学号:";
cin>>x->no;
f=strlen(x->no);
}
cout<<"请输入该学生的姓名:";
cin>>x->name;
h=strlen(x->name);
while(h>8)
{
cout<<"你输入的学生姓名,超过了规定的范围内!!\n请重新输入该学生的姓名:";
cin>>x->name;
h=strlen(x->name);
}
cout<<"请输入该学生的数学成绩:";
cin>>x->math;
while(x->math<0||x->math>120)
{
cout<<"-----你输入的数学成绩有误!!请重新输入!!-----\n";
cout<<"请输入该学生的数学成绩:";
cin>>x->math;
}
cout<<"请输入该学生的英语成绩:";
cin>>x->eng;
while(x->eng<0||x->eng>120)
{
cout<<"-----你输入的英语成绩有误!!请重新输入!!-----\n";
cout<<"请输入第该学生的英语成绩:";
cin>>x->eng;
}
x->ave=(x->math+x->eng)/2.0;
p=head;
cout<<"*********请输入你想在那位学生的学号后插入该学生的信息:";
cin>>no;
while(p!=0)
{
if(strcmp(p->no,no)==0)
{
x->next=p->next;
p->next=x;
scxslb(head); /*输入所有学生的信息*/
return head;
}
p=p->next;
}
cout<<"\n*********没有该学生的学号或者你的输入有误*********\n";
return head;
}

student *ckxsxc(student *head) /*查看一名学生信息*/
{
student *p;
int f;
char no[100];
cout<<"请输入你要查看学生的学号:";
cin>>no;
f=strlen(no);
if(f>20)
{
cout<<"**********你输入的学号长度,超过了规定的范围内**********\n";
return head;
}
p=head;
while(p!=0)
{
if(strcmp(p->no,no)==0)
{
cout<<"\t学号"<<"\t姓名"<<"\t数学"<<"\t英语"<<"\t平均分\n";
cout<<"\t"<<p->no<<"\t"<<p->name<<"\t "<<p->math<<"\t "<<p->eng<<"\t "<<p->ave<<endl;
return head;
}
p=p->next;
}
cout<<"**********没有你要查看学生的学号,或者你的输入有误*********\n";
return head;
}

student *scxsc(student *head) /*删除一名学生信息*/
{
student *pa,*pc;
int f;
char no[100];
cout<<"请输入你要删除学生的学号:";
cin>>no;
f=strlen(no);
if(f>20)
{
cout<<"**********你输入的学号长度,超过了规定的范围内**********\n";
return head;
}
pa=pc=head;
if(strcmp(pc->no,no)==0)
{
head=pc->next;
}
while((pc!=NULL)&&(strcmp(pc->no,no)!=0))
{
pa=pc;
pc=pc->next;
}
if(pc==NULL)
{
cout<<"\n******没有该学生的学号或者你的输入有误!******\n";

}
else
{
pa->next=pc->next;
delete pc;
}
return head;
}

void scxscjb(student *head) /*删除学生成绩表*/
{
student *p;
p=head;
while(head)
{
head=p->next;
delete p;
p=head;
}
cout<<"\n\n*********学生成绩表以为空*********\n\n";
exit (0);
}

int main(void)
{
student *head;
char i;
head=jlxslb(); /*建立学生成绩链表*/
jsxscj(head); /*计算学生成绩的平均分*/
scxslb(head); /*输入所有学生的信息*/
gm();
cout<<"请选择功能:";
cin>>i;
if(i=='6')
exit(0);
while(!(i>'0'&&i<'6'))
{
cout<<"\n-------你输入的功能值有误,请参考《功能提示》-------\n请选择功能:";
cin>>i;
}
while(i!='6')
{
if(i=='1')
crxsxc(head); /*插入一名学生信息*/
if(i=='2')
ckxsxc(head); /*查看一名学生信息*/
if(i=='3')
{
scxsc(head); /*删除一名学生信息*/
scxslb(head); /*输入所有学生的信息*/
}
if(i=='4')
scxslb(head); /*查看所有的学生信息*/
if(i=='5')
scxscjb(head); /*删除学生成绩表*/
cout<<"请选择功能:";
cin>>i;
if(i=='6')
exit(0);
while(!(i>'0'&&i<'6'))
{
cout<<"\n-------你输入的功能值有误,请参考《功能提示》-------\n请选择功能:";
cin>>i;
}
}
getchar();
return 0;
}

2006-06-19 07:33
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 
忘记加一个p->next=NULL
while(strcmp(no,a)!=0)
{
p=new student;
p->next=NULL;
strcpy(p->no,no);
cout<<"请输入第"<<j<<"学生的姓名:";
cin>>p->name;
h=strlen(p->name);
while(h>8)
{
cout<<"你输入的学生姓名,超过了规定的范围内!!\n请重新输入该学生的姓名:";
cin>>p->name;
h=strlen(p->name);
}
2006-06-19 07:36
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 

版主`~
加一个detele 程序崩溃是什么原因``
要是不加 为什么删除不了第一个学生的学号~

student *scxsc(student *head) /*删除一名学生信息*/
{
student *pa,*pc;
int f;
char no[100];
cout<<"请输入你要删除学生的学号:";
cin>>no;
f=strlen(no);
if(f>20)
{
cout<<"**********你输入的学号长度,超过了规定的范围内**********\n";
return head;
}
pa=pc=head;
if(strcmp(pc->no,no)==0)
{

head=pc->next;
delete pc;
}
while((pc!=NULL)&&(strcmp(pc->no,no)!=0))
{
pa=pc;
pc=pc->next;
}
if(pc==NULL)
{
cout<<"\n******没有该学生的学号或者你的输入有误!******\n";

}
else
{
pa->next=pc->next;
delete pc;
}
return head;
}

2006-06-21 07:43
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 

各位大GG,不好意思`~给你们带来那么多的忙烦~偶的内心深表歉意~
这样好了`改天请你们吃夜宵`~ 但,来我这的车费你们自己出噢`
自学差不多一年了`` 从C转C++,还不怎么善于用C++的写法, 请见谅~~
第一次写这么长的程序,而且还要考虑程序全面的问题, 出现了一些不该犯的错误`
我知道自己还有许多知识等着我去巩固,明白自己现在编程的水平`菜菜菜`
所以我会努力-----努力的`` 在今后的日子可能还会有许多的问题需要你们的帮助``

谢谢啦``~

2006-06-22 07:57
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 

终于搞定了``
~~嘿嘿``
thank----------thank`~~

2006-06-22 11:45
快速回复:[求助]链表问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031953 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved