数据结构试验指导书.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构试验指导书.doc》由会员分享,可在线阅读,更多相关《数据结构试验指导书.doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构实验指导及报告书 / 学年 第 学期姓 名:_学 号:_班 级:_指导教师:_计算机科学与工程学院2009实验一 顺序表与链表一、实验目的1、掌握线性表中元素的前驱、后续的概念。2、掌握顺序表与链表的建立、插入元素、删除表中某元素的算法。3、对线性表相应算法的时间复杂度进行分析。4、理解顺序表、链表数据结构的特点(优缺点)。 二、实验内容和要求1、阅读下列两个函数,写出函数的基本功能。并运行程序,写出结果。#define m 100typedef struct int elemm; int len;sqlist;void creatsqlist(sqlist *l) 基本功能:_int
2、 i; scanf(%dn,&l-len); for(i=0;ilen;i+) scanf(%d,&l-elemi);void ins(sqlist *l,int k) 基本功能:_int j; for(j=l-len-1;j=k;j-) l-elemj+1=l-elemj; l-elemk=99; l-len+;int main() int i; sqlist *l,L; l=&L; creatsqlist(l); for(i=0;ilen;i+) printf(%dn,l-elemi); printf(n); ins(l,2); for(i=0;ilen;i+) printf(%3d,l-
3、elemi);return 0;l 算法分析与运行结果2、为第1题补充查找功能函数,根据给定的元素值,返回查找的结果:若找到则返回下标,未找到则返回1。l 算法代码3、阅读下列两个函数,写出函数的基本功能。并运行程序,写出结果。typedef struct lnodeint data; struct lnode *next; node,*nodeptr;nodeptr creat() 基本功能:_nodeptr l,p,q; int i ,n,e; l=(nodeptr)malloc (sizeof(node); q=l; q-next=0; scanf(%d,&n); for(i=1;ida
4、ta=e; q-next=p; q=p; q-next=0; return l;void out(nodeptr l) 基本功能:_nodeptr p; p=l-next; while(p) printf(%3d,p-data);p=p-next;int main() nodeptr l; l=creat(); out(l); l 算法分析与运行结果4、为第3题补充插入功能函数和删除功能函数。l 算法代码以下为选做实验:5、循环链表的应用(约瑟夫回环问题)n个数据元素构成一个环,从环中任意位置开始计数,计到m将该元素从表中取出,重复上述过程,直至表中只剩下一个元素。提示:用一个无头结点的循环单
5、链表来实现n个元素的存储。l 算法代码6、设一带头结点的单链表,设计算法将表中值相同的元素仅保留一个结点。提示:指针p从链表的第一个元素开始,利用指针q从指针p位置开始向后搜索整个链表,删除与之值相同的元素;指针p继续指向下一个元素,开始下一轮的删除,直至pnull为至,既完成了对整个链表元素的删除相同值。l 算法代码三、实验小结四、教师评语实验二 栈和队列一、实验目的1、掌握栈的结构特性及其入栈,出栈操作;2、掌握队列的结构特性及其入队、出队的操作,掌握循环队列的特点及其操作。二、实验内容和要求1、阅读下列函数,写出函数的基本功能。并运行程序,写出结果。#define Stack_Size
6、50typedef structint elemStack_Size;int top;SeqStack;int push(SeqStack *S, int x) 基本功能:_ if(S-top=Stack_Size-1) return(0); S-top+; S-elemS-top=x; return(1);int pop(SeqStack *S, int *x) 基本功能:_ if(S-top=-1) printf(stack empty); return(0); else *x=S-elemS-top; S-top-; return(1); void prin(SeqStack *x) 基
7、本功能:_int i;printf(n);for(i=0;itop;i+)printf( %d ,x-elemi);int main()SeqStack x;int i,a;x.top=-1;for(i=0;i=5;i+) push(&x,i*2);prin(&x);prin(&x);for(i=0;i=2;i+)pop(&x,&a);printf(pop: %d,a);prin(&x);return 0; l 算法分析与结果2、阅读并运行下面算法程序,并分析算法功能及运行结果。#include#define m 20#define elemtype chartypedef structele
8、mtype stackm;int top;stacknode;stacknode *sp;init(stacknode *st)st-top=0;return;void push(stacknode *st,elemtype x)if(st-top=m)printf(the stack is overflow!n);elsest-top=st-top+1;st-stackst-top=x;void pop(stacknode *st)st-top=st-top-1;int main()char sm;int i,k;printf(create a empty stack!n);sp=mallo
9、c(sizeof(stacknode);init(sp);printf(input a expression:n);gets(s);for(i=0;itop=0)printf(match)!n);elseprintf(not match)!n);return 0;l 算法分析及运行结果3、利用栈,编写算法函数将给定的十进制数转换为八进制。l 算法实现代码以下为选做实验:4、正读和反读都相同的字符序列为“回文”,例如,“abcddcba”、 “qwerewq”是回文,“ashgash”不是回文。试写一个算法判断读入的n个字符的字符序列是否为回文。要求利用栈或队列完成。l 算法实现代码三、实验小结
10、四、教师评语实验三 串的模式匹配一、实验目的1、了解串的基本概念2、了解串的模式匹配的基本算法的实现 二、实验内容和要求1、阅读并运行下面程序,分析算法的基本功能。#define m 100typedef structchar chm;int len;sqstr;void creat(sqstr *s)scanf(%s,s-ch);s-len=strlen(s);int index(sqstr s,sqstr t) int i=0,j=0; while(is.len&jt.len) if(s.chi=t.chj) i+;j+; else i=i-j+1;j=0; if(j=t.len) ret
11、urn (i-j+1); else return(-1);int main() int a; sqstr S,T,*s=&S,*t=&T; creat(s); creat(t); a=index(S,T); printf(%d,a);return 0;l 算法分析及运行结果2、实现串的模式匹配的KMP算法l 算法实现代码三、实验小结四、教师评语实验四 二叉树一、实验目的1、掌握二叉树的基本特性2、掌握二叉树的递归遍历算法 3、理解二叉树的非递归算法4、通过二叉树的深度和层次遍历算法,理解二叉树的基本特性 二、实验内容和要求1、阅读并运行下面二叉树的基本操作算法。/*二叉链表基本算法*/#inc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 试验 指导书
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内