数据结构试验12文档格式.docx

上传人:b****4 文档编号:15869256 上传时间:2022-11-16 格式:DOCX 页数:12 大小:18.29KB
下载 相关 举报
数据结构试验12文档格式.docx_第1页
第1页 / 共12页
数据结构试验12文档格式.docx_第2页
第2页 / 共12页
数据结构试验12文档格式.docx_第3页
第3页 / 共12页
数据结构试验12文档格式.docx_第4页
第4页 / 共12页
数据结构试验12文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

数据结构试验12文档格式.docx

《数据结构试验12文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构试验12文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

数据结构试验12文档格式.docx

//析构函数

voidInsert(inti,Tx);

//在单链表中第i个位置插入元素值为x的结点

TDelete(inti);

//在单链表中删除第i个结点

intLocate(Tx);

//求单链表中值为x的元素序号

voidPrintList();

//遍历单链表,按序号依次输出各元素

private:

T>*first;

//单链表的头指针

};

再次,设计单链表类LinkList的构造函数和析构函数。

用头插法或尾插法建立单链表。

头插法建立单链表的算法如下:

头插法建立单链表

temlate<

LinkList:

:

LinkList(Ta[],intn)

{

first=newNode<

first->

next=NULL;

//初始化一个空链表

for(i=0;

i<

n;

i++)

{

s=newNode<

s->

data=a[i];

//为每个数组元素建立一个结点

next=first->

next;

//插入到头结点之后

next=s;

}

析构函数用于释放单链表中所有结点,算法如下:

单链表的析构函数算法~LinkList

template:

~LinkList()

p=first;

//工作指针P初始化

while(p)//释放单链表的每一个结点的存储空间

q=p;

//暂存被释放结点

p=p->

//工作指针P指向被释放结点,使单链表不断开

deleteq;

最后,对所建立的单链表设计插人、删除、查找等基本操作的算法。

(l)插人算法

单链表插人算法Insert

template<

voidLinkList:

Insert(inti,Tx)

j=0;

while(p&

&

j<

i-1)

{

p=p->

//工作指针P后移

j++;

if(!

p)throw“位置”;

else{

data=x;

//向内存申请一个结点s,其数据域为x

next=p->

//将节点s插入到结点p之后

p->

(2)删除算法

单链表的删除算法Delete

Template<

TLinkList:

Delete(inti)

p=first;

//工作指针p初始化

While(p&

i-1)//查找第i-1个结点

}

if(!

p||!

next)throw“位置”;

//结点p不存在或结点p的后继结点不存在

else{

q=p->

next;

x=q->

data;

//暂存被删结点

next=q->

//摘链

deleteq;

returnx;

(3)查找算法

单链表查找算法Locate

template<

intLinkList:

Locate(Tx)

p=first->

j=1;

while(p&

data!

=x)

//工作指针p后移

j++;

if(p)returnj;

elsereturn0;

4.实验程序

//以下为头函数,文件名为LinkList.h

#ifdefLinkList_H

#defineLinkList_H

template<classT>

structNode

Tdata;

Node<

T>

*next;

//此处<

也可以省略

};

classLinkList

Public:

LinkList(Ta[],intn);

~LinkList();

voidInsert(inti,Tx);

//在单链表中第i个位置播入元素为x的结点

TDelete(inti);

intLocate(Tx);

voidPrintList();

//遍历单链表,按序号依次输出各元素

private:

*first;

};

#endif

//以下为头函数LinkList.h中LinkList类的成员函数按规定定义,文件名为LinkList.cpp

#include"

LinkList.h"

LinkList<

*first;

first=newNode<

next=NULL;

for(inti=0;

n;

i++)

*s;

s=newNode<

;

data=a[i];

s->

//插入到头结点之后

next=s;

~LinkList()

T>*p,*q;

p=first;

q=p;

//工作指针P指向被释放结点的下一个结点,//使单链表不断开

 

voidLinkList<

*p;

intj;

p=first;

//工作指针p初始化

while(P&

P=P->

j++;

if(!

p)throw”位置”,

else{

*s;

s=newNode<

data=x;

//向内存申请一个结点:

,其数据域为x

next=p->

//结点s插人到结点p之后

P->

next=s;

TLinkList<

*p;

intj;

P=first;

j=0;

while(p“j<

I-1)//查找第i-1个结点

p=p->

j++;

P||!

P->

//结点P不存在或结点P的后继结点不存在

else{

*q;

intx;

q=p->

data;

next=q->

deleteq;

returnx;

intLinkList<

,p;

j=1;

if(p)returnj;

elsereturn0;

PrintList()

while(p)

cout<

<p->

data<

<endl;

p=p->

//以下为主函数

#include<

iostream.h>

//引用输入输出流库函数的头文件

usingnamespacestd;

#include”LinkList.cpp”//引用单链表类的声明和定义

voidmain()

intr[]={1,2,3,4,5};

LinkList<

int>

a(r,5);

<

”执行插人操作前数据为:

”<

endl;

a.PrintList();

//显示链表中所有元素

try

a.Insert(2,5);

catch(char*s)

<s<

cout<<”执行插人操作后数据为:

”<<endl;

//显示链表中所有元素

cout<<”值为5的元素位置为:

”;

a.Locate(5)<<endl;

//查找元素5,并返回在单链表中位置

cout<<”执行删除操作前数据为:

a.PrintList();

a.Delete

(1);

//删除元素4

”执行删除操作后数据为:

思考题:

为单链表的结点设计一个结点类,重新实现单链表基本操作的验证。

实 验 二二叉树操作验证

二叉树操作验证

1.实验目的

(1)掌握二叉树的逻辑结构

(2)掌握二叉树的二叉链表存储结构;

(3)掌握基于二叉链表存储的二叉树的遍历操作的实现。

2.实验内容

(1)建立一棵含有n个结点的二叉树,采用二叉链表存储;

(2)前序(或中序、后序)遍历该二叉树。

3.实现提示

二叉链表的结点结构如图所示。

lchild

data

rchild

图二叉树的结点结构

二叉链表的结点用C++中的结构类型描述为:

structBiNode

BiNode<

*lchild,*rchil

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

当前位置:首页 > 职业教育 > 职高对口

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

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