| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1679 人关注过本帖
标题:(求助)关于建立十字链表的问题
只看楼主 加入收藏
wwanghee
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-8-9
收藏
 问题点数:0 回复次数:2 
(求助)关于建立十字链表的问题

《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;
};
以上程序并没有编完,因为能力有限,到此处已经理不清思路了。
望各位高手们能提点关于十字链表的建议来解决这个问题。
谢谢大家了。

搜索更多相关主题的帖子: 字链 
2007-08-09 16:32
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:0 
以下是引用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
三、系统功能
各种基本数据的录入。
各种基本数据的修改。即:允许对已经录入的数据重新进行编辑、修改。
各种基本数据的插入。
各种基本数据的删除。
基于各种数据的查询。
基于各种基本数据的统计计算。
四、数据结构
系统的数据结构要采用十字链表。数据结构如图:

我编写了一半,发现十字链表比单链表复杂得多,如下是我的部分编程(只会这么多):
#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!!
};
以上程序并没有编完,因为能力有限,到此处已经理不清思路了。
望各位高手们能提点关于十字链表的建议来解决这个问题。
谢谢大家了。

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


要练习算法就来http:///!!有挑战哦!!
2007-08-09 16:47
wwanghee
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-8-9
收藏
得分:0 
谢谢啦
2007-08-11 10:35
快速回复:(求助)关于建立十字链表的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025993 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved