数据结构课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计

实验1 线性表及其应用

1.集合的并、交和差

【问题描述】

编制一个能演示执行集合的并、交和差运算的程序

【基本要求】

1)集合的元素限定为小写字母;

2)演示程序以用户和计算机的对话方式执行。

void Union(OrderedSet &T,OrderedSet S1, OrderedSet S2)

{//求已建成的集合Sl和S2的并集T,即:S1.head!=NULL且S2.head!=NULL if(InitList(T){

pl=GetEiemPos(Sl,1);

p2=GetElemPos(S2,l);

while(pl&&p2)

{

cl=Elem(pl); c2=Elem(p2);

if(cl<=c2)

{

Append(T,Copy(pl);

pl=SuccNode(pl);

if(cl==c2) p2=SuccNode(p2);

}

else

{ Append(T,Copy(p2)); p2=SuccNode(p2); }

while(pl)

{ Append( T,Copy(pl)); pl=SuccNode(pl);}

while(p2)

{Append(T,Copy(p2)); p2=SuccNode(p2);}

}

}//Union

votd Intersection(OrderedSet &T,OrderedSet S1; OrderedSet S2) {

//求集合 Sl 和 S2 的交集 T

if(!InitList(T)) T.head =NULL;

else{

pl=GetElemPos(S1,1);

p2=GetElemPos(S2,l);

while(pl&&p2){

c1=Elem(p1);

c2=Elem(p2);

if(cl

else if(cl>c2) p2=SuccNode(p2);

else{ //cl==c2

Append(T,Copy(pl));

pl=SuccNode(pl);

p2=SuccNode(p2);

}//else

}//while

}// else

}//Intersection

void Difference(OrderedSet &T,OrderedSet S1,OrderedSet S2) {//求集合Sl和S2的差集T

if(!InitList(T)) T.head =NULL;

else {

pl =GetElemPos(S1,l);p2=GetElemPos(S2,1);

while(pl&&p2)

{

cl=Elem(pl);c2=Elem(p2);

if(cl

Append(T,Copy(pl));

pl=SuccNode(pl)

else if(cl>c2) p2=SuccNode(p2);

else // Cl ==c2

{pl =SuccNode(p1);p2=SuccNode(p2);}

}//while

while(pl)

{

Apend(T,Copy(pl));

p =SuccNode(pl);

}

}//else

}//Difference

void WriteSetElem(LinkType p)

{//显示集合的一个元素

pramtk'Jh WriteElem(Elem(p));

}//WriteSetElem

votd Printset(OrderedSet T)

{//显示集合的全部元素

p=GetElemPos(T,1);

printf('[']);

if(p){

WriteElem(Elem(p);

p=SuccNode(p);

}

ListTraverse(p,WriteSetElem());

Prtntf(')]');

}//Printset

实验2 栈、队列和递归程序设计

2. 迷宫问题。

【问题描述】

随机产生一个mXn的迷宫,0和1分别表示迷宫中的通路和障碍。求出一条从入口到出口的通路,或得到没有通路的结论。

【基本要求】

以链表作存储结构的栈类型,写一个非递归程序。

#include

#include

using namespace std;

#define M 20

#define N 20

struct move{int dx,dy;};

move mazemove[8];

char ma[M][N];

int False=0;

void maze()

{int i,j,num;

for(i=1;i

{for(j=1;j

{num=(800*(i+j)+1500)%327;

if((num<156)&&(i!=M||j!=N))

ma[i][j]='1';

else

ma[i][j]='0';

}

}

ma[1][1]='0';

ma[M-2][N-2]='0';

for(i=0;i

{for(j=0;j

cout<

cout<

}

}

void inimove()

{mazemove[0].dx=0;mazemove[0].dy=1;

mazemove[1].dx=1;mazemove[1].dy=1;

mazemove[2].dx=1;mazemove[2].dy=0;

mazemove[3].dx=1;mazemove[3].dy=-1;

mazemove[4].dx=0;mazemove[4].dy=-1;

mazemove[5].dx=-1;mazemove[5].dy=-1;

相关文档
最新文档