数据结构与算法课程设计 .doc
《数据结构与算法课程设计 .doc》由会员分享,可在线阅读,更多相关《数据结构与算法课程设计 .doc(24页珍藏版)》请在三一办公上搜索。
1、数据结构与算法课程设计目录第一部分:课程设计题目要求第二部分:设计内容及结果展示第三部分:设计体会计算机科学系2011年数据结构与算法课程设计题目1.用单链表构造并实现多项式加、减法程序;并完成下列算式:f1(x) = 5x4+3x3-2x2+7x+1f2(x) = 5x3-10x2+2x-202.实现二叉树深度优先周游非递归前序和中序算法,并且自我构造一颗二叉树进行验证。3.实现图的邻接表表示程序,在此基础上,实现图的深度(DFS)和广度优先算法(BFS),并且用一个实例进行验证。4.编制一个演示内部排序算法比较的程序。采用快速排序、希尔排序和堆排序进行比较对输入的数字序列进行排序。A.输入
2、:排序方法选择,由键盘或文件输入待排序表的表长。B. 输出:在不同输入情况下和不同排序方法关键字参加的比较次数和关键字的移动次数,列表显示。5.编写一个串类完成:两个字符串的连接、字符串的复制、字符串的比较 、求字符串长度、取子串、串的替换等六个基本函数。同时,以实例验证各个函数的功能。设计内容及结果展示1.用单链表构造并实现多项式加、减法程序;并完成下列算式:f1(x) = 5x4+3x3-2x2+7x+1f2(x) = 5x3-10x2+2x-20()算法void creatlist(list &L,int n) list p; L=new link; L-next=NULL; coutp
3、lease input ntype for link:endl; for (int i=0;ip-signp-time; p-next=L-next; L-next=p; void display (list L) link* p=L-next; while(p!=NULL) coutsignnext; void playadd(list a,list b) list p,q,r,s; int x; p=a-next;q=b-next; s=a; while(p!=NULL)&(q!=NULL) if(p-timetime) r=q-next; q-next=p; s-next=q; s=q;
4、q=r; else if(p-timeq-time) s=p; p=p-next; else x=p-sign+q-sign; if(x!=0) p-sign=x; s=p; else s-next=p-next; free(p); p=s-next; r=q; q=q-next; free(r); if(q!=NULL) s-next=q; free(b); 运行结果:2.实现二叉树深度优先周游非递归前序和中序算法,并且自我构造一颗二叉树进行验证。()算法void Init() memset(node,-1,sizeof(node); memset(built,0,sizeof(built)
5、; error=false;void Build_Binary_Tree(int n) cout请按层序依次输入每一个结点及其左儿子,右儿子的数据域的值。若该结点没有左儿子,右儿子,则相应地输入-1; for(i=1;ifather_dataleft_child_dataright_child_data; if(father_data=-1) error=1; return;if(i=1) built1=true; nodei.data=father_data; if(left_child_data!=-1) nodei.left=idx=LEFT(i); nodeidx.data=left_
6、child_data;if(right_child_data!=-1) nodei.right=idx=RIGHT(i); nodeidx.data=right_child_data;elsefor(j=2;j=maxn) error=true; return;builtj=true;builtj=true;if(left_child_data!=-1) nodej.left=idx=LEFT(j); nodeidx.data=left_child_data;if(right_child_data!=-1) nodej.right=idx=RIGHT(j); nodeidx.data=righ
7、t_child_data;void PreTraversal(int i) top=0; while(top|i!=-1) if(i!=-1) printf(%d ,nodei.data); stacktop+.num=i; i=nodei.left;else i=stack-top.num; i=nodei.right;void InTraversal(int i) top=0; while(top|i!=-1) if(i!=-1) stacktop+.num=i; i=nodei.left; else i=stack-top.num; printf(%d ,nodei.data);i=no
8、dei.right;运行结果:3.实现图的邻接表表示程序,在此基础上,实现图的深度(DFS)和广度优先算法(BFS),并且用一个实例进行验证。()算法:void IniQueue(LinkQueue&Q)Q.rear=Q.front=new QNode;Q.front-next=NULL;void EnQueue(LinkQueue&Q,int e) QueuePtr p=new QNode;p-data=e;p-next=NULL;Q.rear-next=p;Q.rear=p;bool DeQueue(LinkQueue&Q,int&e)QueuePtr p;if(Q.front=Q.rea
9、r)return ERROR;p=Q.front-next;e=p-data;Q.front-next=p-next;if(Q.rear=p)Q.rear=Q.front;delete(p);return OK;bool QueueEmpty(LinkQueue Q)if(Q.rear=Q.front)return 1;elsereturn 0;int LocateVex(AlGraph&G,char v)int i=0;while(iG.Vexnum)&(G.verticesi.data!=v)i+;if(iG.Vexnum)return i;elsereturn -1;bool Creat
10、eDG(AlGraph&G)coutG.Vexnum;coutG.arcnum;cout请输入各顶点的信息endl;for(int i=0;iG.verticesi.data;G.verticesi.firstarc=NULL;for(int k=1;k=G.arcnum;k+) char v1,v2;coutv1v2;int i=LocateVex(G,v1);int j=LocateVex(G,v2);if(i0|jadjvex=j;if(G.verticesi.firstarc=NULL)|(G.verticesi.firstarc-adjvexj) p-nextarc=G.vertic
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构与算法课程设计 数据结构 算法 课程设计

链接地址:https://www.31ppt.com/p-2396685.html