数据结构实验题Word格式文档下载.docx

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

数据结构实验题Word格式文档下载.docx

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

数据结构实验题Word格式文档下载.docx

#include<

iostream>

usingnamespacestd;

structNode{

intentry;

Node*next;

Node();

Node(intitem,Node*add_on=NULL);

};

Node:

:

Node()

{

next=NULL;

}

Node(intitem,Node*add_on)

entry=item;

next=add_on;

classList{

public:

List();

Node*retrieve(intposition)const;

voidinsert(intposition,constint&

x);

voidremove(inttarget);

intsequential_search(constint&

target);

private:

intcount;

Node*head;

List:

List()

head=NULL;

count=0;

Node*List:

retrieve(intposition)const

Node*q=head;

for(inti=0;

i<

position;

i++)

q=q->

next;

returnq;

voidList:

insert(intposition,constint&

x)

Node*previous,*following,*newnode;

if(position>

0){

previous=retrieve(position-1);

following=previous->

}

elsefollowing=head;

newnode=newNode(x,following);

if(position==0)

head=newnode;

else

previous->

next=newnode;

count++;

remove(inttarget)

Node*prior,*current;

if(sequential_search(target)>

0){

prior=retrieve(sequential_search(target)-1);

current=prior->

prior->

next=current->

else{

current=head;

head=head->

deletecurrent;

count--;

intList:

sequential_search(constint&

target)//sequentialsearch

intdata;

for(intposition=0;

position<

count;

position++){

data=retrieve(position)->

entry;

if(data==target)returnposition;

intmain()

inttask_number,number,com;

intcontrol,x,y;

intposition;

Listl;

cin>

>

task_number;

{

cin>

number>

com;

for(intj=number;

j>

0;

j--)

{

l.insert(0,j);

}

for(intk=0;

k<

k++)

cin>

control>

x>

y;

l.remove(x);

position=l.sequential_search(y);

if(control==1)l.insert(position-1,x);

elseif(control==2)l.insert(position+1,x);

for(j=0;

j<

number;

j++)

cout<

<

l.retrieve(j)->

entry<

'

'

;

cout<

endl;

return0;

Wire_Routing(随机迷宫,最短路径)

queue>

windows.h>

time.h>

structposition//位置

introw;

intcol;

voiddisplay(intsize,int**grid);

/*****************************产生随机MAZE,并显示************************************/

intsize,i,j,p,q,m,n;

int**grid;

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|

FOREGROUND_GREEN|FOREGROUND_BLUE);

//白色

cout<

"

pleaseenterthesize(边长)ofsquare!

(size<

100)"

size;

grid=newint*[size+2];

//动态创建二维数组

for(i=0;

size+2;

grid[i]=newint[size+2];

//这个指针数组的每个指针元素又指向一个数组。

grid[i][0]='

y'

grid[0][i]='

grid[size+1][i]='

grid[i][size+1]='

srand((unsigned)time(NULL));

//以时间为随机种子

for(i=1;

=size;

for(j=1;

if(1==rand()%10)//10%摡率达成

grid[i][j]='

else

grid[i][j]=0;

}

p=rand()%size+1;

q=rand()%size+1;

//随机起点、终点

grid[p][q]='

g'

m=rand()%size+1;

n=rand()%size+1;

grid[m][n]='

r'

display(size,grid);

/**********************************找路********************************

把nbr都压入queue,一个一个弹出在找一下nbr,再压入,直到终点**********************/

positionoffset[4];

//方向

offset[0].row=1;

offset[0].col=0;

//right

offset[1].row=0;

offset[1].col=-1;

//down

offset[2].row=-1;

offset[2].col=0;

//left

offset[3].row=0;

offset[3].col=1;

//up

positionhere;

positionnbr;

positionfinish;

queue<

position>

Q;

//初始化

here.row=p;

here.col=q;

finish.row=m;

finish.col=n;

grid[here.row][here.col]=0;

while(true){

4;

nbr.row=here.row+offset[i].row;

nbr.col=here.col+offset[i].col;

if((nbr.row==finish.row)&

&

(nbr.col==finish.col))

{grid[finish.row][finish.col]=grid[here.row][here.col]+1;

break;

elseif(grid[nbr.row][nbr.col]==0)

{grid[nbr.row][nbr.col]=grid[here.row][here.col]+1;

Q.push(nbr);

}//符合条件的nbr都压进去

if((nbr.row==finish.row)&

{grid[finish.row][finish.col]=grid[here.row][here.col]+1;

break;

if(Q.empty())

nopath!

here=Q.front();

//取出front

Q.pop();

};

/****************************建造最短路径****************

从终点往回看,每次循环都看和终点计数的差值****************/

here=finish;

intlength=grid[finish.row][finish.col];

for(j=1;

length;

if(grid[nbr.row][nbr.col]==(grid[finish.row][finish.col]-j))

grid[nbr.row][nbr.col]='

p'

//你都把值改了下一循环成了p-1

here=nbr;

}

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

当前位置:首页 > 总结汇报 > 其它

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

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