- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.. . .
..
实验一 链式结构综合设计
班级 :
信科 1403 班
姓
段胜磊
学
2014040430
名:
号:
5
一、实验目标
本实验通过定义单向链表的数据结构
,设计创建链表 、插入结点 、遍历结点等基本算
法,使学生掌握线性链表的基本特征和算法
,并能熟练编写 C 程序,培养理论联系实际和
自主学习的能力 ,提高程序设计水平 。
二、实验内容
设计一个职工信息查询系统
。每个职工的信息包括
,职工号 ,姓名 ,所属部门号 ,月薪。
1 )建立一个职工信息的单链表L。
2 )在单链表 L 中查找职工号为 t 的职工信息 ,并输出 。
3 )在单链表 L 中删除职工号为 t 的职工信息 。
4 )输出单链表 L 中所有的节点
三、数据结构的设计
由于职工信息在逻辑结构上是线性的 ,将其建立为链式结构既使得职工信息的增加可以是
动态的 ,也使得其删除过程容易实现 。
具体节点类型定义如下 :
Typedef struct elem
{int no;
Char name[20];
/ 职工号
/ 职工姓名
Int depno;
/ 所属部门号
.
学习参
考
.
..
.
.
..
Int salary;
/ 月薪
}elemtype
Typedef struct node
{elemtype data;
/ 职工信息域
struct node *next;
/ 链域
}Lnode
节点的示例图 :
Data 域
Next
域
职工号
职工姓名
所属部门号
月薪
四、各功能函数的设计
(1 )建立链表函数
Lnode *new(void)
功能:该函数实现建立一个含有头节点的链表
。
具体过程 :
1
)建立一个含有头节点的空链表L。
2
) 输入一个新的职工信息 。 如为非法信息则建立链表过程结束执行
6), 否则继续
3)。
3
)建立一个新节点 p ,并将输入的信息记录在节点
p 的 data 域 。
4
)将节点 p 跟在链表 L 的头节点之后 。
5
)继续 2)
6
)返回链表的头指针 。
.
.
学习参
考
..
.
.
..
(2 )查找职工号为
t 的职工信息函数
Lnode *find(Lnode *L, int t)
功能:该函数实现在含有头节点的链表 L 上查找职工号为 t 的职工信息 ,找到则返回
该节点的指针 ,否则返回 NULL 。
具体过程 :
1) 建立一个新节点 ,并且定义一个 t 作为要查找的职工号 。然后把头结点的 next 域
赋值给 p 节点 。
2)
接着判断 p 节点指向的链表是否为 NULL 。
3)
如果 p 节点指向的链表不为空 ,则判断节点 p 中的职工号是否为
t 职工号 ,如果不
是则 p 节点指向它的下一个域 。
返回节点 p 。
(3 )删除职工号为
t 的职工信息函数
int
del(Lnode *L, int t)
功能:该函数实现在一个含有头节点的链表
L 上删除职工号为
t 的职工信息 ,删除成
功则返回
1,否则返回
0。
具体过程 :
1) 建立两个新节点
p 和
q ,然后把该链表的头结点赋值给节点
p 。
2) 判断节点
p 的下一个域是否为空
。
3) 如果节点
p 的下一个域为空 ,则返回
0;否则 ,把节点
p 的下一个域赋值给节点
q ,
接着节点
q 的下一个域赋值给节点
p 的下一个域 。
4) 返回
1
(4 )输出职工信息函数 void out(Lnode *p)
功能:该函数实现输出 p 所指节点的职工信息 。
具体过程 :
.
学习参
考
.
.. . .
..
建立一个新的节点 p 。
判断 p 是否为空 。
如果 p 不为空 ,则分别输出职工信息 。
然后使节点 p 指向节点 P 的下一个域 。五、实验结果及分析
实验结果 :
结果分析 :这是开始分别录入了三个职工的信息 ;
结果分析 :这是重新把刚才录入的所有职工信息的都输出来 ;
.
学习参
考
.
.. . .
..
结果分析 :( 1 )首先我们查找了职工号为 222 的职工信息 ;
2)然后接着删除职工号为 222 的职工信息 ;
3)最后输出了职工信息 。
六、源代码
#includestdlib.h
#includestdio.h
typedef struct elem
{
int no;
// 职工号
char name[20];
// 职工姓名
int depno;
// 所属部门号
int salary;
// 月薪
}elemtype
文档评论(0)