宿舍管理系统 链表 C语言 C++ 数据结构 链表 课程设计(Dormitory management system list, C language, C++ data structure, linked list curriculum design).doc
文本预览下载声明
宿舍管理系统 链表 C语言 C++ 数据结构 链表 课程设计(Dormitory management system list, C language, C++ data structure, linked list curriculum design)
# stdio.h in
# stdlib.h in
# string.h in
# conio.h in
/ * 采用双向链表结构, 方便添加删除和排序 * /
typedef struct node {/ * 定义结构体类型dnode * /
long id; / * 楼号和房间号, 因为一个楼号加一个房间号才能唯一定位一个房间, 前两个字节存楼号, 后两个字节存房间号 * /
int); / * 面积 * /
int max 所容纳人数; / * * /
int current 已入住人数; / * * /
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 (% d% d \ t \ t% d% d t \ t% d , lou, room, n - area, n - max, n - current);
}
void output (输出所有记录) / * * /
{
dnode * pos = head;
if (head = = null)
{
printf (no record);
return;
}
printf (lou troom \ tarea \ tmax \ tcurrent \ n );
while (pos)
{
the output _ one (pos); / * 循环调用output _ one * /
pos = pos - next;
}
}
void sort ()
{
int max = 0,;
dnode * pos = head;
if (head = = null)
{
printf (no record);
return;
}
while (pos)
{
if (pos - , max)
max = pos - current;
pos = pos - next;
}
printf (lou troom \ tarea \ tmax \ tcurrent \ n );
for (i = max; i = 0; i --)
{
pos = head;
while (pos)
{
if (pos - current = = i)
the 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 (building:);
scanf (% d lou);
printf (room);
scanf (% d, room);
printf (the 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 n - id) / * 按顺序查找, 如果找到比自己大的, 就插在它前面 * /
{
if (pos - prior)
pos - prior - next = n;
n - prior = pos - prior;
pos - prior = n;
if (pos - next)
pos - next - prior = n;
n
显示全部