当前位置: 代码迷 >> C语言 >> (求助)关于建立十字链表的问题
  详细解决方案

(求助)关于建立十字链表的问题

热度:336   发布时间:2007-08-09 16:32:41.0
(求助)关于建立十字链表的问题

《C语言程序设计》课程设计
(注:必须要用C语言)
一、题目
(1)学生住宿信息管理系统
二、需要处理的基础数据
对全校各学生宿舍楼住宿信息进行管理,主要包括学生基本信息、学生住宿缴费信息和学生宿舍楼信息。
学生基本信息参考:
中文字段名 类型及长度 举例
学号 char[12] 012006015678
姓名 char[20] zhangming
性别 char m,f
出生日期 char[12] 1988/09/03
类别 char[15] benke,zhuanke,shuoshi,boshi
学制 short 4,3,2
入学时间 char[8] 200609
班级 char[10] is0601,cs03
宿舍楼号 char[5] qy11,yy15,xq13
房间号 char[5] 502
联系电话 char[20] 15912345678

住宿缴费信息参考:
中文字段名 类型及长度 举例
学号 char[12] 012006015678
姓名 char[20] zhangming
缴费日期 char[12] 2007/03/05
缴费金额 float 1000.00
系付 char[5] 2006,表示付2006年住宿费
收款人 char[20] wanghua

宿舍楼信息参考:
中文字段名 类型及长度 举例
宿舍楼号 char[5] qy11,yy15,xq13
栋长姓名 char[20] liuhuan
值班室电话 char[20] 87541234
房间数 short 144
床位数 short 576
每床位年住宿费 float 1000.00
三、系统功能
各种基本数据的录入。
各种基本数据的修改。即:允许对已经录入的数据重新进行编辑、修改。
各种基本数据的插入。
各种基本数据的删除。
基于各种数据的查询。
基于各种基本数据的统计计算。
四、数据结构
系统的数据结构要采用十字链表。数据结构如图:

我编写了一半,发现十字链表比单链表复杂得多,如下是我的部分编程(只会这么多):
#include<stdio.h>
#include<stdlib.h>
#include"struct.h"
void *creat()
{struct dorminfo *p1=NULL,*p2=NULL,*head=NULL;
struct student *p3=NULL,*p4=NULL;
struct fee *p5=NULL,*p6=NULL;
p1=p2=malloc(sizeof(struct dorminfo));
p3=p4=malloc(sizeof(struct student));
p5=p6=malloc(sizeof(struct fee));
scanf("%s%s%s%d%d%f",p1->number,p1->name,p1->phone,
&p1->rooms,&p1->beds,&p1->money);

while(p1->number!=0)
{if(head==NULL)
{head=p1;p2=p1;p2->next2=p3;}
else
{p2->next1=p1;
p2=p1;
}
p1=malloc(sizeof(struct dorminfo));
do
{scanf("%s%s%c%s%s%d%s%s%s%s%s",p3->number,p3->name,&p3->sex,
p3->date,p3->sort,&p3->len,p3->time,p3->class,p3->rooms,
p3->beds,p3->phone);
scanf("%s%s%s%f%s%s",p5->number,p5->name,p5->date,&p5->money,
p5->year,p5->payee);
while(p5->number!=0)
{
p4=malloc(sizeof(struct student));
p3->next1=p4;
p3->next2=p5;
}
头文件struct.h是:
struct student
{char number[12];
char name[20];
char sex;
char date[12];
char sort[15];
short len;
char time[8];
char class[10];
char dorm[5];
char room[5];
char phone[20];
struct student *next1;
struct fee *next2;
};

struct fee
{char number[12];
char name[20];
char date[12];
float money;
char year[5];
char payee[20];
struct fee *next;
};

struct dorminfo
{char number[5];
char name[20];
char phone[20];
short rooms;
short beds;
float money;
struct dorminfo *next1;
struct student *next2;
};
以上程序并没有编完,因为能力有限,到此处已经理不清思路了。
望各位高手们能提点关于十字链表的建议来解决这个问题。
谢谢大家了。

搜索更多相关的解决方案: 字链  

----------------解决方案--------------------------------------------------------
以下是引用wwanghee在2007-8-9 16:32:41的发言:

《C语言程序设计》课程设计
(注:必须要用C语言)
一、题目
(1)学生住宿信息管理系统
二、需要处理的基础数据
对全校各学生宿舍楼住宿信息进行管理,主要包括学生基本信息、学生住宿缴费信息和学生宿舍楼信息。
学生基本信息参考:
中文字段名 类型及长度 举例
学号 char[12] 012006015678
姓名 char[20] zhangming
性别 char m,f
出生日期 char[12] 1988/09/03
类别 char[15] benke,zhuanke,shuoshi,boshi
学制 short 4,3,2
入学时间 char[8] 200609
班级 char[10] is0601,cs03
宿舍楼号 char[5] qy11,yy15,xq13
房间号 char[5] 502
联系电话 char[20] 15912345678

住宿缴费信息参考:
中文字段名 类型及长度 举例
学号 char[12] 012006015678
姓名 char[20] zhangming
缴费日期 char[12] 2007/03/05
缴费金额 float 1000.00
系付 char[5] 2006,表示付2006年住宿费
收款人 char[20] wanghua

宿舍楼信息参考:
中文字段名 类型及长度 举例
宿舍楼号 char[5] qy11,yy15,xq13
栋长姓名 char[20] liuhuan
值班室电话 char[20] 87541234
房间数 short 144
床位数 short 576
每床位年住宿费 float 1000.00
三、系统功能
各种基本数据的录入。
各种基本数据的修改。即:允许对已经录入的数据重新进行编辑、修改。
各种基本数据的插入。
各种基本数据的删除。
基于各种数据的查询。
基于各种基本数据的统计计算。
四、数据结构
系统的数据结构要采用十字链表。数据结构如图:
document.body.clientWidth*0.5) {this.resized=true;this.width=document.body.clientWidth*0.5;this.style.cursor='pointer';} else {this.onclick=null}" alt="" />
我编写了一半,发现十字链表比单链表复杂得多,如下是我的部分编程(只会这么多):
#include<stdio.h>
#include<stdlib.h>
#include"struct.h"
void *creat()
{struct dorminfo *p1=NULL,*p2=NULL,*head=NULL;
struct student *p3=NULL,*p4=NULL;
struct fee *p5=NULL,*p6=NULL;
p1=p2=malloc(sizeof(struct dorminfo));
p3=p4=malloc(sizeof(struct student));
p5=p6=malloc(sizeof(struct fee));
scanf("%s%s%s%d%d%f",p1->number,p1->name,p1->phone,
&p1->rooms,&p1->beds,&p1->money);

while(p1->number!=0)
{if(head==NULL)
{head=p1;p2=p1;p2->next2=p3;}
else
{p2->next1=p1;
p2=p1;
}
p1=malloc(sizeof(struct dorminfo));
do
{scanf("%s%s%c%s%s%d%s%s%s%s%s",p3->number,p3->name,&p3->sex,
p3->date,p3->sort,&p3->len,p3->time,p3->class,p3->rooms,
p3->beds,p3->phone);
scanf("%s%s%s%f%s%s",p5->number,p5->name,p5->date,&p5->money,
p5->year,p5->payee);
while(p5->number!=0)
{
p4=malloc(sizeof(struct student));
p3->next1=p4;
p3->next2=p5;
}
头文件struct.h是:
struct student
{char number[12];
char name[20];
char sex;
char date[12];
char sort[15];
short len;
char time[8];
char class[10];
char dorm[5];
char room[5];
char phone[20];
struct student *next1;
struct fee *next2;-------这里应该包含是fee链表的首地址phead;
};

struct fee
{char number[12];
char name[20];
char date[12];
float money;
char year[5];
char payee[20];
struct fee *next;
};

struct dorminfo
{char number[5];
char name[20];
char phone[20];
short rooms;
short beds;
float money;
struct dorminfo *next1;
struct student *next2;-----这里应该包含student链表首地址phead!!
};
以上程序并没有编完,因为能力有限,到此处已经理不清思路了。
望各位高手们能提点关于十字链表的建议来解决这个问题。
谢谢大家了。

我觉得不难啊!!做过类似的东西!!


----------------解决方案--------------------------------------------------------
谢谢啦
----------------解决方案--------------------------------------------------------
  相关解决方案