数据结构实验Word文件下载.docx

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

数据结构实验Word文件下载.docx

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

数据结构实验Word文件下载.docx

i--)

for(intj=0;

j<

i-1;

j++)

{

if(l->

base[j]>

l->

base[j+1])

{

temp=l->

base[j];

l->

base[j]=l->

base[j+1];

base[j+1]=temp;

}

}

voidinsertList(sqList*l,intelem)//insert

if(l->

length+1>

listSize)

l->

base=(int*)realloc(l->

base,sizeof(int)*(l->

listSize+20));

inti=1;

while(elem<

base[l->

length-i]&

&

length-i>

=0)

length-i+1]=l->

length-i];

i++;

l->

length-i+1]=elem;

length++;

voiddeleteList(sqList*l,intelm)//delete

inti=0;

for(;

length&

base[i]!

=elm;

i++);

if(i!

=l->

length)

for(;

length-1;

l->

base[i]=l->

base[i+1];

length]=0;

length--;

intfindElm(sqList*l,intelem)//find

if(l->

base[i]==elem)

returni;

return-1;

voidprintList(sqList*l)//print

cout<

base[i]<

"

sqList*unionLists(sqList*l1,sqList*l2)//并¡

é

集¡

¥

sqList*l=(sqList*)malloc(sizeof(sqList));

base=(int*)malloc(sizeof(int)*(l1->

listSize+l2->

listSize));

listSize=l1->

listSize;

intpa=0,pb=0,pc=0;

while(pa<

l1->

pb<

l2->

if(l1->

base[pa]<

base[pb]){

if(pc==0)

base[pc]=l1->

base[pa];

pc++;

}elseif(l->

base[pc-1]!

=l1->

base[pa]){

pa++;

}else{

base[pb];

=l2->

base[pc]=l2->

pb++;

base[pa])

pc++;

pa++;

while(pb<

base[pb])

pb++;

length=pc;

returnl;

sqList*publicElems(sqList*l1,sqList*l2)//交?

base[pa]==l2->

}elseif(l1->

链表操作

structnode{

intelem;

node*next;

};

classlinkList{

public:

node*head;

linkList()

head=(node*)malloc(sizeof(node));

head->

next=NULL;

linkList(intl)

length=l;

for(inti=0;

node*p=(node*)malloc(sizeof(node));

cin>

p->

elem;

p->

next=head->

next;

head->

next=p;

voidsort()//排?

序¨

°

node*p1,*p2,*p3;

for(inti=length;

p1=head;

p2=p1->

for(intj=0;

p3=p2->

if((p2->

elem)>

(p3->

elem))

{

p2->

next=p3->

p3->

next=p2;

p1->

next=p3;

}

p1=p1->

p2=p1->

voidprint()

node*p=head->

while(p!

=NULL)

cout<

elem<

p=p->

linkList*join(linkList*l)//不?

另¢

¨

ª

外ª

a开a辟À

´

新?

空?

间?

把ã

?

两¢

个?

链¢

¡

ä

表À

结¨

¢

合?

在¨

²

一°

起e

linkList*listC=newlinkList();

listC->

length=length+l->

node*p1=l->

head->

next,*p2=head->

next,*p3=listC->

head;

while(p1!

=NULL&

p2!

if(p1->

p2->

elem)

p3->

next=p1;

p3=p3->

else

p2=p2->

if(p1!

p3->

if(p2!

returnlistC;

linkList*unionList(linkList*l)//求¨

®

并¡

length=0;

if(listC->

length==0||(listC->

length!

=0&

p3->

elem!

=p1->

p3=p3->

listC->

=p2->

if(listC->

listC->

p1=p1->

while(p2!

p2=p2->

p3->

linkList*intersection(linkList*l)//求¨

交?

elem==p2->

}else

if(p1->

p1=p1->

else

p2=p2->

二叉树

string>

stack>

queue>

structbNode

chardata;

bNode*lChild,*rChild;

bNode*createBTree()

bNode*root;

charc;

c;

if(c=='

#'

)root=NULL;

else

root=(bNode*)malloc(sizeof(bNode));

root->

data=c;

lChild=createBTree();

rChild=createBTree();

returnroot;

voidpreOrderTraverse(bNode*root)

stack<

bNode*>

s;

s.push(root);

while(!

s.empty())

bNode*p;

while((p=s.top())!

s.push(p->

lChild);

data<

s.pop();

if(!

p=s.top();

s.pop();

rChild);

voidlastOrder(bNode*root)

if(root==NULL)return;

if(root->

lChild!

=NULL)lastOrder(root->

rChild!

root->

voidlayerTraverse(bNode*root)

queue<

q;

if(root!

=NULL)q.push(root);

bNode*elem;

q.empty())

elem=q.front();

elem->

q.pop();

if(elem->

=NULL)q.push(elem->

inttreeHeight(bNode*root)

intheight=0;

=NULL)

height=treeHeight(root->

lChild)+1;

inttemp=treeHeight(root->

rChild)+1;

if(temp>

height)

height=temp;

returnheight;

intcountLeaves(bNode*root)

intnum=0;

if(root==NULL)returnnum;

lChild==NULL&

rChild==NULL)

num+=1;

if(root->

num+=countLeaves(root->

returnnum;

哈弗曼树哈弗曼编码

vector>

structharffmanNode

intwegiht;

intparent,lchild,rchild;

typedefchar**HarffmanCode;

intselectLeasted(harffmanNode*ht,intlength)//minweight

intminIndex=-1;

for(inti=1;

=length;

if(ht[i].parent==0&

minIndex==-1)

minIndex=i;

else

if(ht[i].parent==0&

ht[i].wegiht<

ht[minIndex].wegiht)

minIndex=i;

ht[minIndex].parent=length+1;

returnminIndex;

int_tmain(intargc,_TCHAR*argv[])

inputweight(size):

vector<

int>

w(length);

w[i];

inttotalNodeNum=2*length-1;

harffmanNode*harfmanTree=(harffmanNode*)malloc(sizeof(harffmanNode)*(totalNodeNum+1));

harfmanTree[i].wegiht=w[i-1];

harfmanTree[i].parent=0;

harfmanTree[i].lchild=0;

harfmanTree[i].rchild=0;

for(intj=length+1;

=totalNodeNum;

harfmanTree[j].wegiht=0;

harfmanTree[j].parent=0;

harfmanTree[j].lchild=0;

harfmanTree[j].rchild=0;

for(intk=length+1;

k<

k++)//createtree

intleast1=selectLeasted(harfmanTree,k-1);

intleast2=selectLeasted(harfmanTree,k-1);

harfmanTree[k].lchild=least1;

harfmanTree[k].rchild=least2;

harfmanTree[k].wegiht=harfmanTree[least1].wegiht+harfmanTree[least2].wegiht;

HarffmanCodehfCode=(HarffmanCode)malloc(sizeof(char*)*(length+1));

char*code=(char*)malloc(sizeof(char)*length);

code[length-1]='

\0'

intpointer,k;

{

pointer=length-1;

k=i;

for(intj=harfmanTree[i].parent;

j!

=0;

j=harfmanTree[j].parent)

pointer--;

if(harfmanTree[j].lchild==k)

code[pointer]='

0'

1'

k=j;

hfCode[i]=(char*)malloc(sizeof(char)*(length-pointer));

strcpy(hfCode[i],&

code[pointer]);

hfCode[i]<

inta;

a;

return0;

邻接表

structarcNode

intadjvex;

arcNode*nextArc;

structvNode{

intdata;

arcNode*firstArc;

voidbfs(vNode*l

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

当前位置:首页 > 工作范文 > 行政公文

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

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