顺序表单链表树图代码Word下载.docx

上传人:b****5 文档编号:18906772 上传时间:2023-01-02 格式:DOCX 页数:25 大小:19.43KB
下载 相关 举报
顺序表单链表树图代码Word下载.docx_第1页
第1页 / 共25页
顺序表单链表树图代码Word下载.docx_第2页
第2页 / 共25页
顺序表单链表树图代码Word下载.docx_第3页
第3页 / 共25页
顺序表单链表树图代码Word下载.docx_第4页
第4页 / 共25页
顺序表单链表树图代码Word下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

顺序表单链表树图代码Word下载.docx

《顺序表单链表树图代码Word下载.docx》由会员分享,可在线阅读,更多相关《顺序表单链表树图代码Word下载.docx(25页珍藏版)》请在冰豆网上搜索。

顺序表单链表树图代码Word下载.docx

classSeqList

public:

SeqList(){Length=0;

}

SeqList(XXa[],intn);

~SeqList(){}

intLength(){returnlength;

XXGet(inti);

intLocate(XXx);

voidInsert(inti,XXx);

XXDelete(inti);

voidPrintList();

private:

XXdata[maxsize];

intlength;

//顺序表有参构造函数

SeqList<

XX>

:

SeqList(XXa[],intn)

if(n>

maxsize)throw"

参数非法"

;

for(inti=0;

i<

n;

i++)

data[i]=a[i];

length=n;

//按位查找

XXSeqList<

Get(inti)

if(i<

1&

&

i>

length)throw"

查找位置非法"

elsereturndata[i-1];

//按值查找

intSeqList<

Locate(XXx)

inti;

for(i=0;

length;

if(data[i].BianHao==x.BianHao)

returni+1;

return0;

//插入算法

voidSeqList<

Insert(inti,XXx)

intj;

if(length>

=maxsize)throw"

上溢"

1||i>

length+1)throw"

位置"

for(j=length;

j>

=i;

j--)

data[j]=data[j-1];

data[i-1]=x;

length++;

//删除算法

Delete(inti)

XXx;

if(length==0)throw"

下溢"

if(i<

length)throw"

x=data[i-1];

for(j=i;

j<

j++)

data[j-1]=data[j];

length--;

returnx;

//输出函数

PrintList()

cout<

<

data[i].BianHao<

setw(12)<

data[i].name<

data[i].Like<

setw(12)

<

data[i].Adress<

endl;

cout<

intmain()

XinXiX[5]={{1001,"

wangxin"

"

Game"

402"

},

{1002,"

zhaohuang"

Food"

524"

{1003,"

liuxing"

Create"

112"

{1004,"

huge"

Film"

119"

{1005,"

qiyue"

Book"

110"

}};

inti,j,k;

SeqList<

XinXi>

array(X,5);

"

请选择功能:

1输出列表"

2删除元素"

3插入元素"

4按位查找"

5按值查找"

do

{

cin>

>

i;

switch(i)

{

case1:

cout<

编号姓名爱好地址"

array.PrintList();

break;

case2:

请输入删除位置:

cin>

j;

array.Delete(j);

case3:

请输入要插入的信息:

XinXia;

a.BianHao>

a.name>

a.Like>

a.Adress;

请输入插入位置"

array.Insert(j,a);

case4:

XinXitemp;

请输入欲查找位置:

k;

查找内容如下:

temp=array.Get(k);

temp.BianHao<

temp.name<

temp.Like<

temp.Adress<

case5:

XinXix;

XinXib;

请输入所查找信息的编号:

x.BianHao;

所在位置为"

array.Locate(x)<

b=array.Get(array.Locate(x));

b.BianHao<

b.name<

b.Like<

b.Adress<

}

}while(i>

0);

return0;

2.单链表

classDataType>

structNode

XinXidata;

Node<

DataType>

*next;

*first;

classLinkList

LinkList();

LinkList(DataTypea[],intn);

~LinkList();

intLength();

DataTypeGet(inti);

intLocate(DataTypex);

voidInsert(inti,DataTypex);

DataTypeDelete(inti);

//单链表输出算法

voidLinkList<

*p;

p=first->

next;

while(p!

=NULL)

p->

data.BianHao<

data.name<

<

data.Like<

data.Adress<

p=p->

}

//求线性表长

intLinkList<

Length()

intcount=0;

count++;

returncount;

//线性表按位查找

DataTypeLinkList<

intcount=1;

=NULL&

count<

i)

}

if(p==0)throw"

elsereturnp->

data;

//线性表按值查找

Locate(DataTypex)

if(p->

data.BianHao==x.BianHao)

returncount;

//单链表插入算法

Insert(inti,DataTypex)

*s;

p=first;

intcount=0;

while(p!

i-1)

first;

if(p==NULL)throw"

else

s=newNode<

s->

data=x;

next=p->

p->

next=s;

//无参构造函数

LinkList<

LinkList()

first=newNode<

first->

next=NULL;

//头插法建立单链表

LinkList(DataTypea[],intn)

for(inti=0;

data=a[i];

next=first->

first->

}//头插法与尾插法只能选择其一,且头插法为倒序,尾插法为正序。

//尾插法建立单链表

/*template<

*r;

r=first;

r->

r=s;

r->

}*/

//单链表删除算法

*q;

XinXix;

if(p==NULL||p->

next==NULL)

throw"

q=p->

x=q->

next=q->

deleteq;

returnx;

//单链表析构函数

~LinkList()

while(first!

q=first;

first=first->

LinkList<

5按值查找"

6求其表长"

case2:

case6:

array.Length();

3.树

template<

classT>

structBiNode

Tdata;

BiNode<

T>

*lchild,*rchild;

classBiTree

{

public:

BiTree();

~BiTree();

voidPreOrder(BiNode<

*root);

voidInOrder(BiNode<

voidPostOrder(BiNode<

voidLeverOrder();

private:

*root;

*Creat(BiNode<

voidRelease(BiNode<

};

BiTree<

BiTree()

*root;

root=Creat(root);

//建立二叉链表

BiNode<

*BiTree<

Creat(BiNode<

*root)

charch;

cin>

ch;

if(ch=='

#'

root=NULL;

root=newBiNode<

root->

data=ch;

lchild=Creat(root->

lchild);

rchild=Creat(root->

rchild);

returnroot;

//二叉树前序遍历

voidBiTree<

PreOrder(BiNode<

*root)

if(root==NULL)return;

else{

root->

//输出data

PreOrder(root->

//二叉树中序遍历

InOrder(BiNode<

if(root==NULL)

return;

InOrder(root->

//二叉树后序遍历

PostOrder(BiNode<

PostOrder(root->

//二叉树层序遍历

LeverOrder()

intfront,rear;

*Q;

front=rear=-1;

if(root==NULL)return;

Q[++rear]=root;

while(front!

=rear)

q=Q[++front];

q->

//输出data

if(q->

lchild!

=NULL)

Q[++rear]=q->

lchild;

rchild!

rchild;

//析构函数

~BiTree()

Release(root);

:

Release(BiNode<

*root)

if(root!

Release(root->

deleteroot;

BiTree<

char>

Tree;

*Root;

1前序遍历"

2中序遍历"

3后序遍历"

4层序遍历"

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

当前位置:首页 > 自然科学 > 物理

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

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