1、#includeusing namespace std;struct Node int entry; Node *next; Node(); Node(int item,Node *add_on=NULL);Node:Node() next=NULL;Node(int item,Node *add_on) entry=item; next=add_on;class Listpublic: List(); Node *retrieve(int position)const; void insert(int position,const int &x); void remove(int targe
2、t); int sequential_search(const int &target); private: int count; Node *head;List:List() head=NULL; count=0;Node *List:retrieve(int position)const Node *q=head; for(int i=0;inext; return q;void List:insert(int position,const int &x) Node *previous,*following,*newnode; if(position0) previous=retrieve
3、(position-1); following=previous- else following=head; newnode=new Node(x,following); if(position=0) head=newnode; else previous-next=newnode; count+;remove(int target) Node *prior, *current; if (sequential_search(target) 0) prior = retrieve(sequential_search(target) - 1); current = prior- prior-nex
4、t = current- else current = head; head = head-delete current;count-;int List:sequential_search(const int &target) /sequential search int data; for(int position=0;positionentry; if(data=target)return position;int main() int task_number,number,com; int control,x,y; int position; List l; cintask_number
5、; cinnumbercom; for(int j=number;j0;j-) l.insert(0,j); for(int k=0;kcontrolxy; l.remove(x); position=l.sequential_search(y); if(control=1)l.insert(position-1,x); else if(control=2)l.insert(position+1,x); for(j=0;jnumber;j+) coutentry ; coutwindows.htime.hstruct position /位置 int row; int col;void dis
6、play(int size,int *grid);/*产生随机MAZE,并显示*/ int size,i,j,p,q,m,n; int *grid; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_BLUE);/白色 coutplease enter the size(边长)of square!(size100)size; grid=new int *size+2; /动态创建二维数组 for(i=0;
7、size+2; gridi = new intsize+2; /这个指针数组的每个指针元素又指向一个数组。 gridi0=ygrid0i= gridsize+1i=gridisize+1= srand(unsigned)time(NULL); /以时间为随机种子 for(i=1;=size; for(j=1; if(1=rand()%10) /10%摡率达成 gridij= else gridij=0; p=rand()%size+1; q=rand()%size+1; /随机起点、终点 gridpq=g m=rand()%size+1; n=rand()%size+1; gridmn=r d
8、isplay(size,grid);/*找路* 把nbr都压入queue,一个一个弹出在找一下nbr,再压入,直到终点*/ position offset4; /方向 offset0.row=1;offset0.col=0;/right offset1.row=0;offset1.col=-1;/down offset2.row=-1;offset2.col=0;/left offset3.row=0;offset3.col=1;/up position here; position nbr; position finish; queue Q; /初始化 here.row=p;here.col
9、=q; finish.row=m;finish.col=n; gridhere.rowhere.col=0; while(true)4; nbr.row=here.row+offseti.row; nbr.col=here.col+offseti.col; if(nbr.row=finish.row)&(nbr.col=finish.col) gridfinish.rowfinish.col=gridhere.rowhere.col+1; break; else if(gridnbr.rownbr.col=0) gridnbr.rownbr.col=gridhere.rowhere.col+1
10、; Q.push(nbr); /符合条件的nbr都压进去 if(nbr.row=finish.row)& gridfinish.rowfinish.col=gridhere.rowhere.col+1; break; if(Q.empty()no path! here=Q.front(); /取出front Q.pop(); ;/*建造最短路径* 从终点往回看,每次循环都看和终点计数的差值*/ here=finish; int length=gridfinish.rowfinish.col;for(j=1;length; if(gridnbr.rownbr.col=(gridfinish.rowfinish.col-j) gridnbr.rownbr.col=p /你都把值改了下一循环成了p-1 here=nbr;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1