数据结构第一次实验报告Word格式文档下载.docx
- 文档编号:7031919
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:9
- 大小:56.70KB
数据结构第一次实验报告Word格式文档下载.docx
《数据结构第一次实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构第一次实验报告Word格式文档下载.docx(9页珍藏版)》请在冰点文库上搜索。
由于职工信息在逻辑结构上是线性的,将其建立为链式结构既使得职工信息的增加可以是动态的,也使得其删除过程容易实现。
具体节点类型定义如下:
Typedefstructelem
{intno;
/职工号
Charname[20];
/职工姓名
Intdepno;
/所属部门号
Intsalary;
/月薪
}elemtype
Typedefstructnode
{elemtypedata;
/职工信息域
structnode*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,intt)
该函数实现在含有头节点的链表L上查找职工号为t的职工信息,找到则返回该节点的指针,否则返回NULL。
1)建立一个新节点,并且定义一个t作为要查找的职工号。
然后把头结点的next域赋值给p节点。
2)接着判断p节点指向的链表是否为NULL。
3)如果p节点指向的链表不为空,则判断节点p中的职工号是否为t职工号,如果不是则p节点指向它的下一个域。
4)返回节点p。
(3)删除职工号为t的职工信息函数intdel(Lnode*L,intt)
该函数实现在一个含有头节点的链表L上删除职工号为t的职工信息,删除成功则返回1,否则返回0。
1)建立两个新节点p和q,然后把该链表的头结点赋值给节点p。
2)判断节点p的下一个域是否为空。
3)如果节点p的下一个域为空,则返回0;
否则,把节点p的下一个域赋值给节点q,接着节点q的下一个域赋值给节点p的下一个域。
4)返回1
(4)输出职工信息函数voidout(Lnode*p)
该函数实现输出p所指节点的职工信息。
1)建立一个新的节点p。
2)判断p是否为空。
3)如果p不为空,则分别输出职工信息。
4)然后使节点p指向节点P的下一个域。
五、实验结果及分析
实验结果:
结果分析:
这是开始分别录入了三个职工的信息;
结果分析:
这是重新把刚才录入的所有职工信息的都输出来;
(1)首先我们查找了职工号为222的职工信息;
(2)然后接着删除职工号为222的职工信息;
(3)最后输出了职工信息。
六、源代码
#include<
stdlib.h>
stdio.h>
typedefstructelem
{intno;
//职工号
charname[20];
//职工姓名
intdepno;
//所属部门号
intsalary;
//月薪
}elemtype;
typedefstructnode
{elemtypedata;
//职工信息域
//链域
}Lnode;
Lnode*new()
{
Lnode*head,*p1;
intn=3,k;
head=(Lnode*)malloc(sizeof(Lnode));
head->
next=NULL;
for(k=1;
k<
=n;
k++)
{
p1=(Lnode*)malloc(sizeof(Lnode));
printf("
请输入一个职工号(三位数):
\n"
);
scanf("
%d"
&
p1->
data.no);
请输入一个职工的姓名:
%s"
p1->
data.name);
请输入该职工所属部门号(两位数):
data.depno);
请输入该职工的月薪:
data.salary);
p1->
next=head->
next;
head->
next=p1;
}
return(head);
}
voidout(Lnode*head)
Lnode*p;
p=head->
while(p!
=NULL)
该职工的职工号:
%d\n"
p->
该职工的姓名:
%s\n"
该职工的所属部门号:
该职工的月薪:
p=p->
next;
Lnode*find(Lnode*head,intt)
if(p->
data.no==t)
break;
else
p=p->
return(p);
intdel(Lnode*head,intt)
Lnode*p,*q;
p=head;
while(p->
next!
next->
if(p->
next==NULL)
return(0);
else
q=p->
p->
next=q->
free(q);
return
(1);
voidmain()
Lnode*L,*q;
intx;
intk;
L=new();
out(L);
printf("
请输入你要查找的职工号(三位数):
scanf("
k);
q=find(L,k);
if(q==NULL)
没有找到该职工的信息"
找到该职工的信息为:
q->
x=del(L,k);
if(x==0)
没有删除该职工的信息\n"
已删除该职工的信息\n"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 第一次 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)