数据结构实验指导书源代码Word下载.docx

上传人:b****3 文档编号:14395112 上传时间:2022-10-22 格式:DOCX 页数:67 大小:46.69KB
下载 相关 举报
数据结构实验指导书源代码Word下载.docx_第1页
第1页 / 共67页
数据结构实验指导书源代码Word下载.docx_第2页
第2页 / 共67页
数据结构实验指导书源代码Word下载.docx_第3页
第3页 / 共67页
数据结构实验指导书源代码Word下载.docx_第4页
第4页 / 共67页
数据结构实验指导书源代码Word下载.docx_第5页
第5页 / 共67页
点击查看更多>>
下载资源
资源描述

数据结构实验指导书源代码Word下载.docx

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

数据结构实验指导书源代码Word下载.docx

structlink

{elemtypedata;

//元素类型

link*next;

//指针类型,存放下一个元素地址

};

//头插法建立带头结点的单链表

link*hcreat()

{links,p;

elemtypei;

cout<

<

”输入多个结点数值(用空格分隔),为0时算法结束”;

cin>

>

i;

p=newlink;

p->

next=NULL;

while(i)//当输入的数据不为0时,循环建单链表

{s=newlink;

s->

data=i;

next=p->

next;

next=s;

cin>

}

returnp;

}

//输出单链表

voidprint(1ink*head)

{

1ink*p;

p=head->

while(p->

next!

=NULL)

{

cout<

p->

data<

”->

”;

//输出表中非最后一个元素

p=p->

data;

//输出表中最后一个元素

endl;

∥在单链表head中查找值为x的结点

Link*Locate(1ink*head,elemtypex)

Link*p;

while((p!

=NULL)&

&

(p->

data!

=x))

p=p->

//在head为头指针的单链表中,删除值为x的结点

voiddeletel(1ink*head,elemtypex)

1ink*p,*q;

q=head;

q=p;

If(p==NULL)cout<

“要删除的结点不存在”;

else

q->

next=p->

delete(p);

//在头指针head所指的单链表中,在值为x的结点之后插入值为y的结点

voidinsert(1ink*head,elemtypex,elemtypey)

{link*p,*s;

s=newlink;

data=y;

if(head->

next==NULL)//链表为空

head->

s->

next=NULL:

p=Locate(head,x);

//调用查找算法‘

if(p==NULL)

”插入位置非法”:

(s->

//将单链表p中所有值为x的元素修改成y

voidchange(1ink*p,elemtypex,elemtypey)

link*q;

q=p->

while(q!

{if(q->

data==x)q->

q=q->

voidcount(1ink*h)//统计单链表中结点个数

1ink*p;

intn=0;

p=h->

while(p!

{n++;

returnn;

 

voidmain()

{intn;

elemtypex,y;

link*p,*q;

p=hcreat();

//头插法建立链表

print(p);

//输出刚建立的单链表

”请输入要删除的元素”;

y;

deletel(p,y);

//输出删除后的结果

”请输入插入位置的元素值(将待插元素插入到它的后面)”;

x;

”请输入待插元素值”;

insert(p,x,y);

//输出插入后的结果

”请输入要修改前、后的元素值”;

x>

change(p,x,y);

”请输入要查找的元素值”;

q=Locate(p,x);

if(q==NULL)cout<

x<

”不在表中,找不到!

”<

elsecout<

”在表中,已找到!

n=count(p);

”链表中结点个数为:

n<

endl:

//单链表的建立(尾插法)、插入、删除、查找、修改、计数、输出

#include<

#defineelemtypeint

//指针类型,存放下-个元素地址

};

//尾插法建立带头结点的单链表

link*rcreat()

{link*s,*p,*r;

elemtypei;

i;

p=r=newlink;

while(i)

r->

r=s;

returnp;

{link*p;

"

->

”;

link*Locate(1ink*head,intx)∥在单链表中查找第x个结点

{link*p;

p=head;

intj=0;

(j<

x))

{p=p->

next;

j++;

voiddeleteI(1ink*head,elemtypex)

link*p,*q;

if(p==NULL)cout<

”要删除的结点不存在“;

else

}}

voidinsert(1ink*head,intx,elemtypey)

//在头指针head所指单链表中,在第x个结点之后插入值为y的结点

{link*p,*s;

next==NULL)//链表为空

head->

//调用查找算法

if(p==NULL)

”插入位置非法”;

{s->

}}

voidchange(1ink*p,elemtypex,elemtypey)

{∥将单链表P中所有值为x的元素改成值为y

q=p->

while(q!

{if(q->

data==x)q->

(1ink*p;

retumn;

{intn;

linkp,q;

p=rcreat();

//尾插法建立链表

print(p);

deletel(p,y);

”请输入插入位置”;

insert(p,x,y);

”请输入修改前、后的元素值”;

change(p,x,y);

“请输入要查找的元素值”;

q=Locate(p,x);

if(q==NULL)cout<

”不在表中,找不到!

elsecout<

n=count(p);

endl;

六、选作实验

试设计一元多项式相加(链式存储)的加法运算。

A(X)=7+3X+9X8+5X9

B(X)=8X+22X7-9X8

1.建立一元多项式;

2.输出相应的一元多项式;

3.相加操作的实现。

实验二循环链表的操作

 通过本实验中循环链表和双向链表的使用,使学生进一步熟练掌握链表的操作方式。

本次实验可以从以下两个实验中任选一个:

1.建立一个单循环链表并实现单循环链表上的逆置。

所谓链表的逆置运算(或称为逆转运算)是指在不增加新结点的前提下,依次改变数据元素的逻辑关系,使得线性表(al,a2,a3,…,an)成为(an,…,a3,a2,a1)。

2.构建一个双向链表,实现插入、查找和删除操作。

①建立一个带头结点的单循环链表,从

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

当前位置:首页 > 解决方案 > 学习计划

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

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