ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:16.44KB ,
资源ID:2234857      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2234857.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言双链表简单操作.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言双链表简单操作.docx

1、C语言双链表简单操作#include#include#includetypedef enum false = 0, true = 1 bool;void init_stu();void insert_stu();void delete_stu();bool select_stu();void modifly_stu();void archive_stu();void readInfo_stu();char *getNameById(int);struct Students int num; char name20; struct Students *pre; struct Students *

2、next;struct Students *ptr, *tail, *current, *head;int sel_id; /存放学生的学号/初始化链表,头结点num存放现有的学生个数,name没有具体含义void init_stu() ptr = (struct Students *)malloc(sizeof(struct Students); ptr-num = 0; /学生数,初始值0 strcpy(ptr-name, HeadPointer!); ptr-next = ptr; ptr-pre = ptr; head = tail = ptr; /按学号顺序从小到大排序加入学生/学号

3、为主码,不允许相同void insert_stu() char flag; do ptr = (struct Students *)malloc(sizeof(struct Students); printf(n请输入学生的学号:n); scanf(%d, &ptr-num); /判断学号是否已经存在,如存在则不允许继续输入 if(isExistId(ptr-num) printf(学号已存在,请重新输入!n); continue; printf(请输入学生的姓名:n); scanf(%s, ptr-name); tail = head; current = head-next; /查找合适位

4、置 while(current != head & current-num num) tail = current; current = current-next; /插入合适位置 ptr-next = current; ptr-pre = tail; tail-next = ptr; current-pre = ptr; /学生数加1 head-num +; printf(添加成功,是否继续添加(y/n)n); flag = getch(); while(Y = flag | y = flag);/按学号删除学生记录void delete_stu() int del_id; char *de

5、l_name; char flag; printf(n请输入待删除学生的学号:n); scanf(%d, &del_id); /查找是否有该学号 if(!isExistId(del_id) printf(该学号不存在!n); return; /如果有该学号,返回该学生的信息判断是否应该删除 del_name = getNameById(del_id); printf(待删除的学生信息为:n); printf(学号tt姓名n); printf(%dtt%sn, del_id, del_name); printf(确认删除(y/n)?n); flag = getch(); if(!(y = fla

6、g | Y = flag) return; /开始删除 tail = head; current = head-next; while(current-num != del_id) tail = current; current = current-next; tail-next = current-next; current-next-pre = tail; free(current); /学生数减1 head-num-; printf(n删除成功!n);/按学号查询学生信息,return value: true(学号存在) false(学号不存在)bool select_stu() cha

7、r *sel_name = NULL; printf(n请输入学生的学号:n); scanf(%d, &sel_id); if(!isExistId(sel_id) printf(n学号不存在!n); return false; sel_name = getNameById(sel_id); printf(学生的信息为:n); printf(n学号tt姓名n); printf(%dtt%sn, sel_id, sel_name); return true;/通过学号修改学生的信息(只做了姓名修改)void modifly_stu() char new_name20; char flag; if

8、(!select_stu() return; printf(请输入新的名字:n); scanf(%s, new_name); printf(确认修改?(y/n)n); flag = getch(); if(y = flag | Y = flag) /开始修改 current = head-next; while(current-num != sel_id) current = current-next; strcpy(current-name, new_name); printf(修改成功!n); /保存学生信息到本地void archive_stu() FILE *output; if(0

9、= head-num) printf(n无学生数据!nn); return; if(output = fopen(StudentsInfo.txt, w) = NULL) printf(无法打开文件!n); return; /写入磁盘 current = head; do fprintf(output, %d %sn, current-num, current-name); current = current-next; while(current != head); fclose(output); printf(n保存成功!n);/从本地读取学生信息void readInfo_stu() i

10、nt stu_id; char stu_name20; bool isHead = true; FILE *input; if(0 != head-num) printf(n已有记录输入,不允许再录入!n); return; if(input = fopen(StudentsInfo.txt, r) = NULL) printf(无法打开文件!n); return; tail = head; current = head-next; /录入学生信息 while(fscanf(input, %d %s, &stu_id, stu_name) = 2) /录入头结点信息 if(isHead) ta

11、il-num = stu_id; strcpy(tail-name, stu_name); isHead = false; continue; ptr = (struct Students *)malloc(sizeof(struct Students); ptr-num = stu_id; strcpy(ptr-name, stu_name); tail-next = ptr; ptr-pre = tail; ptr-next = current; current-pre = ptr; tail = current; current = current-next; printf(n录入完毕!

12、n); fclose(input);/显示记录void display() if(0 = head-num) printf(n无学生数据!nn); return; current = head-next; printf(n学号tt姓名n); while(current != head) printf(%dtt%sn, current-num, current-name); current = current-next; printf(共有%d条记录!, head-num);/查找是否存在指定的学号 true代表存在,false表示不存在该学号bool isExistId(int id) cur

13、rent = head-next; while(current != head) if(current-num = id) return true; current = current-next; return false;/通过学号,返回学生的姓名char *getNameById(int del_id) current = head-next; while(current-num != del_id) current = current-next; return current-name; int main(void) char number; init_stu(); while(true) printf(n-

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1