数据结构实验3Word下载.docx

上传人:b****5 文档编号:19150278 上传时间:2023-01-04 格式:DOCX 页数:13 大小:33.58KB
下载 相关 举报
数据结构实验3Word下载.docx_第1页
第1页 / 共13页
数据结构实验3Word下载.docx_第2页
第2页 / 共13页
数据结构实验3Word下载.docx_第3页
第3页 / 共13页
数据结构实验3Word下载.docx_第4页
第4页 / 共13页
数据结构实验3Word下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数据结构实验3Word下载.docx

《数据结构实验3Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构实验3Word下载.docx(13页珍藏版)》请在冰豆网上搜索。

数据结构实验3Word下载.docx

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);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1