宿舍管理系统 链表 C语言 C++ 数据结构 链表 课程设计.docx

上传人:牧羊曲112 文档编号:3444927 上传时间:2023-03-13 格式:DOCX 页数:14 大小:38.01KB
返回 下载 相关 举报
宿舍管理系统 链表 C语言 C++ 数据结构 链表 课程设计.docx_第1页
第1页 / 共14页
宿舍管理系统 链表 C语言 C++ 数据结构 链表 课程设计.docx_第2页
第2页 / 共14页
宿舍管理系统 链表 C语言 C++ 数据结构 链表 课程设计.docx_第3页
第3页 / 共14页
宿舍管理系统 链表 C语言 C++ 数据结构 链表 课程设计.docx_第4页
第4页 / 共14页
宿舍管理系统 链表 C语言 C++ 数据结构 链表 课程设计.docx_第5页
第5页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《宿舍管理系统 链表 C语言 C++ 数据结构 链表 课程设计.docx》由会员分享,可在线阅读,更多相关《宿舍管理系统 链表 C语言 C++ 数据结构 链表 课程设计.docx(14页珍藏版)》请在三一办公上搜索。

1、宿舍管理系统 链表 C语言 C+ 数据结构 链表 课程设计#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>/* 采用双向链表结构,方便添加删除和排序 */typedef struct node /* 定义结构体类型dnode */long id; /* 楼号和房间号,因为一个楼号加一个房间号才能唯一定位一个房间,前两个字节存楼号,后两个字节存房间号 */int area; /* 面积 */int max; /* 所容纳人数 */int current; /* 已入

2、住人数 */struct node *prior,*next; /* 前驱和后继指针 */dnode;dnode* head = NULL;void output_one(dnode* n)/* 输出一条记录 */int lou; int room;room = n->id & 0xffff;lou = n->id >> 16;printf(%dt%dt%dt%dt%dn, lou, room, n->area, n->max,n->current);void output/* 输出所有记录 */dnode* pos = head;if(head = NULL)pr

3、intf(no recordn);return;printf(loutroomtareatmaxtcurrentn);while (pos)output_one(pos);/* 循环调用output_one */pos = pos->next;void sortint max = 0, i;dnode* pos = head;if(head = NULL)printf(no recordn);return;while(pos)if(pos->current>max)max = pos->current;pos = pos->next;printf(loutroomtarea

4、tmaxtcurrentn);for(i=max; i>=0; i-)pos = head;while (pos)if(pos->current = i)output_one(pos);/* 循环调用output_one */pos = pos->next;int insert/* 插入一条数据 */int lou;int room;long louL;dnode* pos = head;dnode* n = malloc(sizeof(dnode);n->prior = NULL;n->next = NULL;/楼号、房间号、面积、所容纳人数、已入住人数printf(bu

5、ilding:);scanf(%d, &lou);printf(room:);scanf(%d, &room);printf(area:);scanf(%d, &n->area);printf(max:);scanf(%d, &n->max);printf(current:);scanf(%d, &n->current);louL = lou;louL = louL<<16;n->id = louL + room;if(head=NULL)/* 如果还没有头节点,就作为头节点 */head = n;return 1;while (pos)if(pos->id >

6、 n->id)/* 按顺序查找,如果找到比自己大的,就插在它前面 */if(pos->prior)pos->prior->next = n;n->prior = pos->prior;pos->prior = n;if(pos->next)pos->next->prior = n;n->next = pos;if(pos = head)head = n;return 1;else if(pos->id = n->id)free(n);return 0;/* 有重复数据,插入不成功 */if (!pos->next)/* 如果已经到链表尾部

7、,插入到后面 */pos->next = n;n->prior = pos;return 1;pos = pos->next;return 1;int delete/* 删除一条记录 */long id;int lou;int room;dnode* pos = head;printf(building:);scanf(%d, &lou);printf(room:);scanf(%d, &room);id = lou;id <<= 16;id += room;if(head = NULL)printf(no recordn);return 0;while (pos)if(p

8、os->id = id)/* 找到匹配的项,进行删除 */if(pos->prior)pos->prior->next = pos->next;if(pos->next)pos->next->prior = pos->prior;if(pos = head)head = pos->next;free(pos);return 1;pos = pos->next;printf(no recordn);return 0;int amend/* 修改已入住人数 */int count;long id;int lou;int room;dnode* pos =

9、 head;printf(building:);scanf(%d, &lou);printf(room:);scanf(%d, &room);printf(current);scanf(%d, &count);id = lou;id <<= 16;id += room;if(head = NULL)printf(no recordn);return 0;while (pos)if(pos->id = id)pos->current = count;return 1;pos = pos->next;printf(no recordn);return 0;void search

10、/* 查找 */long id;int lou;int room;dnode* pos = head;printf(building:);scanf(%d, &lou);printf(room:);scanf(%d, &room);id = lou;id <<= 16;id += room;if(head = NULL)printf(no recordn);return;printf(loutroomtareatmaxtcurrentn);while (pos)if(pos->id = id)output_one(pos);/* 找到就打印 */return;pos = pos-&

11、gtnext;printf(no recordn);int mainwhile (1)int select;/clrscr;system(cls);printf(nttt Room manage systemnn);printf(tttt1 add roomn);printf(tttt2 delete roomn);printf(tttt3 edit roomn);printf(tttt4 browse roomn);printf(tttt5 query roomn);printf(tttt6 sort by currentn);printf(tttt0 quitn);fflush(stdin);scanf(%d, &select);switch (select)case 1:insert;break;case 2:delete;break;case 3:amend;break;case 4:output;break;case 5:search;break;case 6:sort;break;case 0:return 0;printf(press any key to continue.n);getch;return 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号