实验汇总.docx

上传人:b****6 文档编号:6551589 上传时间:2023-01-07 格式:DOCX 页数:29 大小:19.14KB
下载 相关 举报
实验汇总.docx_第1页
第1页 / 共29页
实验汇总.docx_第2页
第2页 / 共29页
实验汇总.docx_第3页
第3页 / 共29页
实验汇总.docx_第4页
第4页 / 共29页
实验汇总.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

实验汇总.docx

《实验汇总.docx》由会员分享,可在线阅读,更多相关《实验汇总.docx(29页珍藏版)》请在冰豆网上搜索。

实验汇总.docx

实验汇总

容易:

①顺序表实验:

#include

usingnamespacestd;

classlist{

intdata[100];

intsize;

public:

voidcreate(int*a);

intfind(intj);

intinsert(intitem,intj);

intdel(intj);

intgetSize(){returnsize;}

};

voidlist:

:

create(int*a){

inti;

for(i=1;i<=a[0];i++)

data[i]=a[i];

size=a[0];

}

intlist:

:

find(inti){

returndata[i];

}

intlist:

:

insert(intitem,intj){

inti;

for(i=size+1;i>j;i--)

data[i]=data[i-1];

data[j]=item;

size++;

return1;

}

intlist:

:

del(intj){

inti;

for(i=j;i

data[i]=data[i+1];

size--;

return1;

}

intmain(){

intT,i,item,j;

intt[100];

cin>>T;

t[0]=T;

for(i=1;i<=T;i++)

cin>>t[i];

listli;

li.create(t);

for(i=1;i

cout<

cout<

cin>>j;

cout<

cin>>j>>item;

li.insert(item,j);

for(i=1;i

cout<

cout<

cin>>j;

li.del(j);

for(i=1;i

cout<

cout<

return0;

}

②顺序查找:

#include

usingnamespacestd;

intmain(){

inttext,T,i,item,j;

intt[100];

cin>>text;

for(j=0;j

cin>>T;

for(i=1;i<=T;i++)

cin>>t[i];

cin>>item;

for(i=T;i>0;i--)

if(t[i]==item)

break;

if(i>0)

cout<<'1'<<""<

else

cout<<'0'<<""<

}

return0;

}

③单链表实验:

#include

usingnamespacestd;

classNode{

public:

intdata;

Node*next;

Node(Node*ptrNext=NULL){

next=ptrNext;

}

Node(inti,Node*ptrNext=NULL){

data=i;

next=ptrNext;

}

};

classlist{

Node*head;

intsize;

public:

list(){head=newNode();size=0;}

Node*index(inti);

intfind(inti);

intinsert(intitem,intj);

intdel(intj);

intgetSize(){returnsize;}

};

Node*list:

:

index(inti){

if(i==0)returnhead;

Node*p=head->next;

intj;

for(j=1;j

=NULL;j++)

p=p->next;

returnp;

}

intlist:

:

find(inti){

Node*p=index(i);

returnp->data;

}

intlist:

:

insert(intitem,intj){

Node*p=index(j-1);

Node*q=newNode(item,p->next);

p->next=q;

size++;

return1;

}

intlist:

:

del(intj){

Node*p=index(j-1);

Node*q=index(j);

p->next=q->next;

deleteq;

size--;

return1;

}

intmain(){

intT,i,item,j,t[100];

listli;

cin>>T;

for(i=1;i<=T;i++)

cin>>t[i];

for(i=1;i<=T;i++)

li.insert(t[i],i);

for(i=1;i

cout<

cout<

cin>>j;

cout<

cin>>j>>item;

li.insert(item,j);

for(i=1;i

cout<

cout<

cin>>j;

li.del(j);

for(i=1;i

cout<

cout<

return0;

}

④折半查找实验:

#include

usingnamespacestd;

intmain(){

inttext,T,t[100],i,j;

intlow,high,mid,key,count;

cin>>text;

for(j=0;j

cin>>T;

for(i=1;i<=T;i++)

cin>>t[i];

low=1;high=T;

count=0;

cin>>key;

while(low<=high){

count++;

mid=(low+high)/2;

if(t[mid]>key)

high=mid-1;

else

if(t[mid]

low=mid+1;

else

break;

}

if(low<=high)

cout<<'1'<<""<

else

cout<<'0'<<""<<'0'<<""<

}

return0;

}

⑤快速排序实验:

#include

usingnamespacestd;

voidShowSeqList(int*Key,intn)

{

inti;

for(i=1;i

cout<

cout<

}

intFirst=1;

voidQuickSort(intlow,inthigh,int*Key)

{

inti,j,Pivotkey;

i=low;j=high;

Pivotkey=Key[low];

while(low

while((low

high--;

if(low

{

Key[low]=Key[high];

low++;

}

while((low

low++;

if(low

{

Key[high]=Key[low];

high--;

}

}

Key[low]=Pivotkey;

if(First)ShowSeqList(Key,j);

First=0;

if(i

if(high+1

}

intmain()

{

inti,t,Key[100];

cin>>t;

for(i=1;i<=t;i++)

cin>>Key[i];

ShowSeqList(Key,t);

QuickSort(1,t,Key);

ShowSeqList(Key,t);

return0;

}

⑥希尔排序实验:

#include

usingnamespacestd;

voidshellsort(int*v,intn){

intgab,I,k,j,temp;

for(gab=n/2;gab>0;gab/=2){

for(i=n;i>0;i-=gab)

for(k=0;k

for(j=k;j

if(v[j]>v[j+gab]){

temp=v[j];

v[j]=v[j+gab];

v[j+gab]=temp;

}

for(i=0;i

cout<

cout<

}

}

intmain(){

intT,t[100];

intI;

cin>>T;

for(i=0;i

cin>>t[i];

for(i=0;i

cout<

cout<

shellsort(t,T);

return0;

}

较难:

⑦图的深度优先搜索实验:

#include

usingnamespacestd;

classDNSTraverse{

intMaxNodeNo;

intAdjMatrix[100][100];

intVisited[100];

public:

intDFSNodeNo;

intDFSNode[100];

voidCreate(int*e,intn);

voidDFS(intv);

};

voidDNSTraverse:

:

Create(int*e,intn){

inti,j;

MaxNodeNo=n;

DFSNodeNo=0;

for(i=0;i

for(j=0;j

AdjMatrix[i][j]=e[i*n+j];

for(i=0;i

Visited[i]=0;

}

voidDNSTraverse:

:

DFS(intv){

intj;

DFSNode[DFSNodeNo++]=v;

Visited[v]=1;

for(j=0;j

if(AdjMatrix[v][j]>0&&Visited[j]==0)

DFS(j);

}

intmain(){

inte[100];

inti,j,m;

intT,S;

DNSTraverse*D=newDNSTraverse();

cin>>T;

for(m=0;m

cin>>S;

for(i=0;i

for(j=0;j

cin>>e[i*S+j];

D->Create(e,S);

D->DFS(0);

for(i=0;iDFSNodeNo;i++)

cout<DFSNode[i]<<"";

cout<

}

return0;

}

⑧最短路径实验:

#include

usingnamespacestd;

#defineINFINITY100

#defineMAX100

typedefstruct

{

intVertexNum;

charVertex[MAX];

intAdjMatrix[MAX][MAX];

}Graph;

GraphMGraph;

charPath[MAX][MAX];

intDest[MAX];

voidCreateGraph(Graph*G)

{

intI,j;

cin>>G->VertexNum;

for(i=1;i<=G->VertexNum;i++)

cin>>G->Vertex[i];

for(i=1;i<=G->VertexNum;i++)

for(j=1;j<=G->VertexNum;j++)

cin>>G->AdjMatrix[i][j];

for(i=1;i<=G->VertexNum;i++)

for(j=1;j<=G->VertexNum;j++)

if(G->AdjMatrix[i][j]==-1)

G->AdjMatrix[i][j]=INFINITY;

}

voidShortestPath(Graph*G,charStartVexChar)

{

intI,j,m,StartVex,CurrentVex,MinDest;

intVisited[MAX];

for(i=1;i<=G->VertexNum;i++)

{

if(G->Vertex[i]==StartVexChar)

{

StartVex=I;

break;

}

}

for(i=1;i<=G->VertexNum;i++)

{

Path[i][0]=0;

Dest[i]=INFINITY;

if(G->AdjMatrix[StartVex][i]

{

Dest[i]=G->AdjMatrix[StartVex][i];

Path[i][1]=G->Vertex[StartVex];

Path[i][2]=G->Vertex[i];

Path[i][0]=2;

}

Visited[i]=’F’;

}

Dest[StartVex]=0;

Visited[StartVex]=’T’;

for(i=1;i<=G->VertexNum;i++)

{

MinDest=INFINITY;

for(j=1;j<=G->VertexNum;j++)

{

if(Visited[j]==’F’&&Dest[j]

{

CurrentVex=j;

MinDest=Dest[j];

}

}

Visited[CurrentVex]=’T’;

for(j=1;j<=G->VertexNum;j++)

{

if((Visited[j]==’F’)&&(MinDest+G->AdjMatrix[CurrentVex][j]

{

Dest[j]=MinDest+G->AdjMatrix[CurrentVex][j];

for(m=0;m<=Path[CurrentVex][0];m++)

Path[j][m]=Path[CurrentVex][m];

Path[j][0]++;

Path[j][Path[j][0]]=G->Vertex[j];

}

}

}

}

voidShowPath(Graph*G)

{

intI,j;

for(i=1;i<=G->VertexNum;i++)

{

cout<Vertex[i]<<”(“<

”;

if(Path[i][0]>0)

{

for(j=1;j<=Path[i][0];j++)

{

cout<<”“<

}

}

cout<

}

}

intmain(intargc,char*argv[])

{

charStartVex;

CreateGraph(&Mgraph);

cin>>StartVex;

ShortestPath(&Mgraph,StartVex);

ShowPath(&Mgraph);

return0;

}

难:

⑨Huffman树:

#include

usingnamespacestd;

#include

#defineERROR-1

#defineCORRECT1

#defineMAXC15

#defineMAXH100

#defineMAXS100

typedefstruct

{

charc;

intweight;

intparent,lchild,rchild;

charcode[MAXC];

}HTNode,*HuffmanTree;

HTNodeHT[MAXH];

voidSelect(inti1,int*s1,int*s2)

{

unsignedintj,s;

s=0;

for(j=1;j<=i1;j++)

{

if(HT[j].parent==0)

{

if(s==0)s=j;

if(HT[j].weight

}

}

*s1=s;

s=0;

for(j=1;j<=i1;j++)

{

if((HT[j].parent==0)&&(j!

=*s1))

{

if(s==0)s=j;

if(HT[j].weight

}

}

*s2=s;

}

voidCreateHTree(intn,char*c,int*w)

{

inti,m,s1,s2;

m=2*n-1;

for(i=1;i<=n;++i)

{

HT[i].parent=HT[i].lchild=HT[i].rchild=0;

HT[i].weight=w[i-1];

HT[i].c=c[i-1];

}

for(;i<=m;++i)

{

HT[i].parent=HT[i].lchild=HT[i].rchild=HT[i].weight=0;

}

for(i=n+1;i<=m;++i)

{

Select(i-1,&s1,&s2);

HT[s1].parent=i;

HT[s2].parent=i;

HT[i].lchild=s1;

HT[i].rchild=s2;

HT[i].weight=HT[s1].weight+HT[s2].weight;

}

}

voidHCode(intn)

{

inti,j,m,c,f,start;

charcd[MAXC];

m=MAXC;

cd[m-1]=0;

for(i=1;i<=n;i++)

{

start=m-1;

for(c=i,f=HT[i].parent;f!

=0;c=f,f=HT[f].parent)

{

if(HT[f].lchild==c)cd[--start]='0';

elsecd[--start]='1';

}

for(j=0;j

HT[i].code[j]=0;

}

}

voidShowHCode(intn)

{

inti;

for(i=1;i

cout<

}

intShowHEncode(intn,char*eString)

{

inti,j;

for(j=0;j

{

for(i=1;i<=n;i++)

{

if(eString[j]==HT[i].c)

{

cout<

break;

}

}

if(i>n)return(ERROR);

}

cout<

return(CORRECT);

}

intShowHDecode(intn,char*dString)

{

inti,c;

intRoot;

Root=2*n-1;

c=Root;

for(i=0;i

{

if((HT[c].lchild==0)&&(HT[c].rchild==0))

{

cout<

c=Root;

}

if(dString[i]=='0')

{

if(HT[c].lchild==0)return(ERROR);

c=HT[c].lchild;

}

else

{

if(HT[c].rchild==0)return(ERROR);

c=HT[c].rchild;

}

}

cout<

return(CORRECT);

}

intmain()

{

inti,n;

charc[MAXH]

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

当前位置:首页 > 成人教育 > 电大

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

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