数据结构实例应用(8)

2019-08-31 16:01

{ printf(\ flag1=1; }

a = q->ptr.tp; flag2 = 0;

while(TRUE) /* 本科生范畴 */ {

if(a == NULL) break; if(flag2) printf(\ else { printf(\ flag2 = 1; }

a = a->ptr.hp; }

if(flag2) printf(\

if(q->type==1 ||( q->ptr.hp==NULL)) printf(\ q = q->ptr.hp; }

printf(\ p = p->ptr.hp; }

printf(\}

GList *StudentInsert(GList *head)/* 插入学生 */ {

char slen[100],teacher[100],graduate[100]; GList *Slen,*p,*q; int i,j; p = head;

printf(\请输入待插入学生信息,如:李刚-二班-1\\n\ scanf(\

if(!(Slen =(GList *)malloc(sizeof(GList)))) exit(1);

for(i=0,j=0;slen[i] != '-';)

Slen->name[j++] = slen[i++]; Slen->name[j] = '\\0'; for(j=0,++i;slen[i] != '-';)

Slen->prof[j++] = slen[i++];

Slen->prof[j] = '\\0';

Slen->type = slen[++i] - 48;

Slen->ptr.hp = Slen->ptr.tp = NULL; if(Slen->type==2) { printf(\请输入所属导师:\\n\ scanf(\ while(strcmp(p->name,teacher)) { p = p->ptr.hp; if(p == NULL) break; } if(p == NULL) printf(\不存在此导师!\\n\ else { if(p->ptr.tp==NULL||p->ptr.tp->type==2) { Slen->ptr.hp=p->ptr.tp; p->ptr.tp=Slen; printf(\插入成功!\\n\ } else { printf(\请输入所属研究生:\\n\ scanf(\ q = p->ptr.tp; while(strcmp(q->name,graduate)) { q = q->ptr.hp; if(q == NULL) break; } if(q == NULL) printf(\该研究生不存在,不能插入!\\n\ else { Slen->ptr.hp = q->ptr.tp; q->ptr.tp = Slen; printf(\插入成功!\\n\ } } } } else

{ printf(\请输入所属导师:\\n\ scanf(\ while(strcmp(p->name,teacher)) { p = p->ptr.hp; if(p == NULL) break; } if(p == NULL) printf(\不存在此导师!\\n\ else { if(p->ptr.tp==NULL||p->ptr.tp->type==1) { Slen->ptr.hp=p->ptr.tp; p->ptr.tp=Slen; printf(\插入成功!\\n\ } else { Slen->ptr.tp = p->ptr.tp;/* printf(\该导师只能带本科生,因此不能将研究生插入!\\n\ p->ptr.tp = Slen; } } }

printf(\ return head; }

GList *StudentDelete(GList *head)/* 删除学生 */ {

char slen[100];

GList *Slen,*p,*q,*a,*m; int i,j;

int flag =FALSE;/* 标记是否删除成功 */ char ch; p = head;

printf(\请输入待删除学生信息,如:李刚-二班-1\\n\ scanf(\

if(!(Slen =(GList *)malloc(sizeof(GList)))) exit(1); for(i=0,j=0;slen[i] != '-';)

Slen->name[j++] = slen[i++]; Slen->name[j] = '\\0'; for(j=0,++i;slen[i] != '-';)

Slen->prof[j++] = slen[i++]; Slen->prof[j] = '\\0';

Slen->type = slen[++i] - 48; if(Slen->type == 2) {

while(p != NULL&&flag==FALSE) {

q = p->ptr.tp; if(q->type==2) {m=q;

while(q!=NULL&&flag==FALSE)

{if(!strcmp(q->name,Slen->name)&& !strcmp(q->prof,Slen->prof)) {printf(\是否要删除这名本科学生:\\n\ printf(\学生:%6s %6s ,师:%6s %6s\\n\

printf(\删除,n不删除\\n\ scanf(\

if(ch == 'y' || ch == 'Y') {if(p->ptr.tp==q)

p->ptr.tp=q->ptr.hp; else

m->ptr.hp=q->ptr.hp; free(q); /* 释放q */ printf(\删除成功!\\n\ }

flag=TRUE; } else

{m=q;q=q->ptr.hp;} }}

else if(q->type==1)

while(q != NULL&&flag==FALSE) {

a = q->ptr.tp; m=a;

while(a != NULL&&flag==FALSE)

{if(!strcmp(a->name,Slen->name)&& !strcmp(a->prof,Slen->prof)) {printf(\是否要删除这名学生:\\n\

printf(\学生:%6s %6s\\n\ printf(\导师:%6s %6s\\n\ printf(\研究生:%6s %6s\\n\ printf(\删除,n不删除\ getchar();

scanf(\

if(ch == 'y' || ch == 'Y') {if(q->ptr.tp==a)

q->ptr.tp=a->ptr.hp; else

m->ptr.hp=a->ptr.hp; free(q);/* 释放q */ printf(\删除成功!\\n\ }

flag=TRUE; } else

{m=a;a=a->ptr.hp;} }

q = q->ptr.hp; }

p = p->ptr.hp; } } else {

while(p != NULL&&flag==FALSE) {

q = p->ptr.tp; m=q;

while(q != NULL&&flag==FALSE) {

if(!strcmp(q->name,Slen->name) && !strcmp(q->prof,Slen->prof)) if(q->ptr.tp != NULL)

{printf(\研究生下面有本科生,如果想删除,需先把本科生移到其他研究生组才可以!\\n\ else

{printf(\是否要删除这名研究生:\\n\ printf(\研究生:%6s %6s ,导师:%6s %6s\\n\ printf(\删除,n不删除\ getchar();

scanf(\

if(ch == 'y' || ch == 'Y') {if(p->ptr.tp==q)

p->ptr.tp=q->ptr.hp; else

m->ptr.hp=q->ptr.hp; free(q);/* 释放q */

printf(\删除成功!\\n\ flag=TRUE;}


数据结构实例应用(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电站综合自动化系统安装调试手册

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: