2022年数据结构单链表应用 2.pdf
1 这是主文件建立文件“student-main.cpp” 粘贴保存#include #include #include #include #includestudent-fun.cpp #define PRINT %6d %12s %5.2fn,p-num,p-name,p-score /定义输出格式#define PRINTF 学号姓名成绩 n char cmd; int num; lklist L; void jiemian() system(cls); printf(n*); printf(n* 欢 迎 使 用 简 易 班 级 学 生 信 息 系 统*); printf(n* *); printf(n*i-增 加 学 生d- 删 除学 生q- 退出 系统*); printf(n* f- 查 询c- 修 改l- 列 出 所 有 学 生 信 息*); printf(n*n); void ReadCommand() do printf(n 请根据提示输入命令: ); fflush(stdin); /清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件scanf(%c,&cmd); while (cmd!=i&cmd!=d&cmd!=l&cmd!=q&cmd!=f&cmd!=c); void Interpret() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - switch(cmd) case i: insert_lklist(L); break; case d: del_lklist(L);break; case l: list_lklist(L); break; case f: find_lklist(L);break; case c: cor_lklist(L);break; case q: exit(0); void main() L=initial_lklist(); do jiemian(); ReadCommand(); Interpret(); system(pause); /暂停,按任意键继续。 while(cmd!=Q&cmd!=q); 2 下边是功能部分新建一个student-fun.cpp文件粘贴#include #include #define PRINT %6d %12s %5.2fn,p-num,p-name,p-score /定义输出格式#define PRINTF 学号姓名成绩 n struct node char name15; int num; float score; struct node *next; ; typedef struct node* pointer; typedef pointer lklist; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - lklist initial_lklist() /初始化单链表。 pointer t; t=(node*)malloc(sizeof(node); t-next=NULL; return t; void find_lklist(lklist head) /按序号查找。 int i; printf(n 请输入学号 : ); scanf(%d,&i); lklist q; pointer p=head; while( (p =NULL)&(p-num!=i) ) p=p-next; if(p!=NULL) printf(PRINTF); printf(PRINT); else printf( 信息不存在 !n); int length_lklist(lklist head) pointer p=head; int j=0; while(p-next) j+; p=p-next; return j; void insert_lklist(lklist head) /插入一个值为x 的元素在第i 个位置, pointer s; if( s =(node*)malloc(sizeof(node) ) printf(n 请输入学号:); scanf(%d,&s-num) ; printf(n 请输入姓名:); scanf(%s,s-name) ; printf(n 请输入分数:); scanf(%f,&s-score) ; s-next=head-next; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - head-next=s; printf(n 你已插入 - 成功! !n); else printf(n 插入操作失败! !n); return; void list_lklist(lklist head) printf(n 表中所有元素如下(共 %d 个元素 ):,length_lklist(head); printf(n*n); printf(PRINTF); if (head-next=NULL) printf(n 表为空! !n); else pointer p=head-next; while(p) printf(PRINT); p=p-next; printf(n*n); void del_lklist(lklist head) int i; printf(n 请输入学号 : ); scanf(%d,&i); lklist q; pointer p=head; int j=0; while( (p!=NULL)&(p-next-num!=i) ) p=p-next; if(p!=NULL) q=p-next; if(q-next=NULL) free(q); else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - p-next=q-next; free(q); printf( 删除成功 !n); void cor_lklist(lklist head) int i; printf(n 请输入学号 : ); scanf(%d,&i); lklist q; pointer p=head; while( (p!=NULL)&(p-next-num!=i) ) p=p-next; if(p!=NULL) q=p-next; printf(n 请输入姓名:); scanf(%s,q-name) ; printf(n 请输入分数:); scanf(%f,&q-score) ; printf( 修改成功 !n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -