文档介绍:#iiiclude '' /*标准输入输出函数库*/
#mclude "" /*标准函数库*/
#mclude "" /*字符串函数库*/
#iiiclude "" /*屏Not find tliis snident?\iiH);
}
void Disp(Link 1) /*显示单链表1中存储的学生记录,内容为strident结构中定义的内容*/
{
Node *p;
p=l->next;/*1存储的是单链表中头结点的指针,该头结点没有存储学生信息,指针域指向的 后继结点才有学生信息可
if(!p) /*p==NULL,NUll 在 stdlib 中定义为 0*/
printf(M\n====>Not student record
getchai();
retuin;
}
pnntf(”\n\ir);
pnntlieaderO; /*输出表格头部*/
while®) /*逐条输出链表中存储的学生信息*/
{
printdata(p);
p=p->next; /*移动直卞一个结点*/
piintf(HEADER3);
}
getchai();
} 严************************************************************ 作用:用于定位链表中符合要求的节点,并返回指向该节点的指针 参数:fiiidmess[]ffi存要查找的具体内容;nameornum[]保存按什么查找; 在单链表1中查找;
**************************************************************/
Node* Locate(Link Lchar findmess[],char naineornum[])
{
Node *r;
if(sticmp(nameornunLHnumH)=0) /*按学号查询*/
{
i-l->next;
wliile(r)
{
if(strcmp(r->,findmess尸=0) /*若找到 findmess 值的学号*7
return r;
r=r->next;
}
}
else if(strcmp(nameoinum/,namen)==0) /*按姓名查询*/
{
i-l->next;
while(i)
if(strcmp(i->,fuidmess)=O) /*若找到 findmess 值的学生姓名 *7
return r;
r=r->next;
}
}
return 0; /*若未找到,返回一个空指针*/
}
/*输入字符串,并进行长度验证(长度<lens)*/
void stiiiigmput(char *tjnt lens,char *notice)
{
charn[255];
do{
printf(notice); /* 显示提示信息 */
scanfC%s”』);/*输入字符串*/
if(stilen(n)>lens)piiiitf(n\ii exceed the required length? \nn); /*进行长度校验,超过 lens 值重新输入*/
}while(stilen(n)>lens);
strcpy(t,n);/*将输入的字符串拷贝到字符串t中*/
}
/*输入分数,0<=分数<=100)*/
iiit numbermput(char *notice)
{
mt t=0;
do{
printf(notice); /* 显示提示信息 */
scanf("%d".&t); /* 输入分数 */
if(t>100 || t<0) pnntf(H\ii score must m [0400]! \nH); /*进行分数校验*7
}while(t>100 || t<0);
return t;
}
/*增加学生记录*/
void Add(Link 1)
{
Node *p.*r,*s;严实现添加操作的临时的结构体指针变量引
char clhflag=0,num[10];
iT;
s=l->next;
system(Hclsn);
Disp(l); /*先打印出已有的学生信息*/
wliile(i->next! =NULL)
i^=r->next; /*将指针移至于链表最末尾,准备添加记录*/
wlule(l) /*一次可输入多条记录,直至输入学号为0的记录结点添加操作*/ {
wlule(l)/*输入学号,保证该学号没有被使用,若输入学号为0,则退出添加记录