数据结构实验3Word下载.docx
- 文档编号:19150278
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:13
- 大小:33.58KB
数据结构实验3Word下载.docx
《数据结构实验3Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构实验3Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
stdlib.h>
stdio.h>
#defineERROR1
#defineOK0
#defineOVERFLOW1
typedefintElemType;
//给int一个别名ElemType
typedefintStatus;
//给int一个别名Status
typedefstructLNode{
ElemTypedata;
structLNode*next;
}LNode,*LinkList;
voidCreateList_L(LinkList&
L,intn)
{
//输入n个数据元素的值,建立带头结点的单链表L
printf("
请输入插入链表的节点值:
\n"
);
LinkListp;
inti;
L=(LinkList)malloc(sizeof(LNode));
L->
next=NULL;
//先建立一个带头结点的空链表
for(i=n;
i>
0;
i--)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("
%d"
&
p->
data);
p->
next=L->
next;
L->
next=p;
}
}
StatusListInsert_L(LinkList&
L,inti,ElemTypee)
{
//带头结点的单链表L中第i个位置之前插入元素e
LinkListp,s;
intj;
//j为计数器
p=L;
//p指向L的头节点
j=0;
while(p&
&
j<
i-1)//顺指针向后查,直到p指向第i个元素之前
p=p->
++j;
if(!
p||j>
i-1)
returnERROR;
s=(LinkList)malloc(sizeof(LNode));
//生成新结点
s->
data=e;
//使新结点数据域的值为e
next=p->
//将新结点插入到单链表L中
p->
next=s;
//修改第i-1个结点指针
returnOK;
}
voidShowList_L(LinkListL)
//输出链表L中的所有元素
链表中的元素为:
p=L->
//跳过头结点
while(p)
{
printf("
%d"
p->
data);
p=p->
}
voidmain()
intn,i,a;
//n为节点数,i为插入元素的位置,a为插入元素的值
LinkListL;
请输入链式表的节点数:
"
scanf("
&
n);
CreateList_L(L,n);
//初始化链表节点个数为n
请输入要插入的位置:
i);
请输入要插入的值:
a);
ListInsert_L(L,i,a);
//在第i个位置插入元素a
ShowList_L(L);
//输出链表L中的所有元素
运行以上程序,根据要求完成下列题目:
1.参考P30页中的例题2.10实现ListDelete_L函数,并在主函数中测试;
2.编写一个函数计算值域为x的结点个数,并在主函数中测试;
以下题目任选一题:
3.编写一个删除链表中值为x的结点的直接前趋结点的算法,若有多个值为x的结点,则删除第一个x的直接前趋结点;
4.改写CreateList_L函数,使得链表创建时为非降序排列;
5.改写ListInsert_L函数,忽略位置参数,在上述非降序排列链表中插入一个元素,使得链表依然保持非降序;
6.写一个对单循环链表进行逆序遍历(打印每个结点的值)的算法;
7.编写一个函数,将单链表中值重复的结点删除,使所得的结果表中各结点值均不相同;
8.改写CreateList_L函数,采用尾插法创建带有头节点的单链表。
四、实验结果与数据处理
详细记录程序在调试过程中出现的问题及解决方法。
记录程序执行的结果(贴图)。
五、分析与讨论
对上机实践结果进行分析,上机的心得体会。
六、教师评语
签名:
日期:
成绩
附源程序清单:
1
StatusListDelete_L(LinkList&
L,inti,ElemType&
e){
LinkListp,q;
intj;
p=L;
j=0;
while(p->
next&
j<
i-1){
p=p->
++j;
if(!
(p->
next)||j>
i-1)returnERROR;
q=p->
next=q->
e=q->
data;
free(q);
returnOK;
intn,i,a,x;
//输出链表L中的所有元素
请输入要删除的位置:
x);
ListDelete_L(L,x,i);
2#include<
StatusMycompara_L(LinkList&
L,ElemTypey)
inti=0;
if(p->
data==y)i++;
}
链表中一共有%d个要查找的结点:
i);
return0;
ElemTypex;
请输入需要查找的节点值:
Mycompara_L(L,x);
Statusmycompara_delete(LinkList&
L)
LinkListp,q,s;
while(p&
next)
s=p;
while(q)
{
if(q->
data==p->
data)
{s->
q=s->
else
{s=q;
q=q->
p=p->
intn;
mycompara_delete(L);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验