数据结构实验任务书(8个).doc
《数据结构实验任务书(8个).doc》由会员分享,可在线阅读,更多相关《数据结构实验任务书(8个).doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目 录实验1 顺序表的应用2实验2 链表的应用5实验3 栈的应用6实验4 队列的应用7实验5 树的应用8实验6 图的应用9实验7 图的应用10实验8 查找与排序11实验1 顺序表的应用实验目的1 熟悉C语言的上机环境,掌握C语言的基本结构。2 会定义线性表的顺序存储结构。3 熟悉对顺序表的一些基本操作和具体的函数定义。4 掌握在线性表的顺序存储结构上的一些其它操作。实验要求1 独立完成;2 程序调试正确,有执行结果。实验内容1、基础题:编写应用程序(填空),实现可以在顺序表中插入任意给定数据类型(定义为抽象数据类型)数据的功能。要求在主函数中定义顺序表并对该顺序表插入若干个整数类型的数据(正整
2、数),对它们求和并输出。请使用动态内存分配的方式申请数组空间,并把主函数设计为一个文件SeqList.cpp,其余函数设计为另一个文件SeqList.h。请填空完成以下给出的源代码并调试通过。(1) 文件SeqList.h:typedef struct List ElemType *list; int size; int MaxSize; SeqList;void InitList(SeqList &L) /初始化线性表 void ClearList(SeqList &L) /清除线性表 int LengthList(SeqList L) /求线性表长度.bool InsertList(Seq
3、List &L, ElemType item, int pos) /按给定条件pos向线性表插入一个元素 .ElemType GetList(SeqList L, int pos) /在线性表L中求序号为pos的元素,该元素作为函数值返回. (2)文件SeqList.cpp:#include #include typedef ElemType;#define MAXSize 10#include SeqList.hvoid main(void)SeqList myList;int i=1, x, sum=0, n;InitList ( );scanf(“%d”, &x);while ( x!=
4、 -1 ) if ( InsertList (myList, , i )=0) printf(错误!n);return ; i+; scanf(“%d”, &x);n = LengthList (myList);for (i=1; i=n; i+)x=GetList(myList, i);sum = + x;printf(%dn , sum); ClearList(myList); 2、提高部分:编写函数bool DeleteElem(SeqList &L, int min, int max) 实现从顺序表中删除其值在给定值min和max之间(min 0) )按顺时针方向围坐一圈,每人持有一个
5、正整数密码。开始时任意给出两个值:一个为首先报数的人的编号i (0i=n),另一个为起始报数上限值m。接着从编号为i的人开始按顺时针方向自1起顺序报数,报到m时停止报数,且报到m的人出列,并将他的密码作为新的m值,从他在顺时针方向上的下一个人起重新自1报数,如此下去,直到所有人全部出列为止。要求设计一个程序模拟此过程,给出出列人的编号序列。基本要求:人数n、每人的正整数密码、首次报数人编号i、初始报数上限值m均由键盘输入。实验3 栈的应用实验目的1 会定义顺序栈和链栈的结点类型。2 掌握栈的插入和删除结点在操作上的特点。3 熟悉对栈的一些基本操作和具体的函数定义。实验要求1 独立完成;2 程序
6、调试正确,有执行结果。实验内容1、 基础题:设栈采用顺序存储结构(用动态数组),请编写栈的各种基本操作的实现函数,并存放在头文件stack.h中。同时建立一个验证操作实现的主函数文件stack.cpp,编译并调试程序,直到正确运行。 提示: 栈的动态数组顺序存储结构可定义如下: struct Stack ElemType *stack ;/ 存栈元素 int top; / 栈顶指示器 int MaxSize; / 栈的最大长度 ; 栈的基本操作可包括: void InitStack (Stack &S); /构造一个空栈 S int EmptyStack (Stack S); /若栈S为空栈返
7、回1,否则返回0 void Push(Stack &S, ElemType item); /元素 item进栈 ElemType Pop(Stack &S); /栈S的栈顶元素出栈并返回 ElemType Peek(Stack S); /取栈S的当前栈顶元素并返回 void ClearStack (Stack &S); /清除栈s,使成为空栈2、 应用题:写一函数,判断给定的字符串是否中心对称。如字符串“abcba”、“abccba”均为中心对称,字符串“abcdba”不中心对称。要求利用stack.h中已实现的有关栈的基本操作函数来实现。请把该函数添加到文件stack.cpp中的主函数前,并
8、在主函数中添加相应语句进行测试。函数原型如下: int IsReverse(char *s) /判断字符串S是否中心对称,是返回1,否则返回0实验4 队列的应用实验目的1 掌握队列的存储结构及基本操作。2 掌握循环队列的设置及循环队列的各种基本操作的实现。3 通过具体的应用实例,进一步熟悉和掌握队列的实际应用。实验要求1 独立完成;2 程序调试正确,有执行结果。实验内容1、 基础题:建立头文件queue.h,定义顺序存储的循环队列存储结构,并编写循环队列的各种基本操作实现函数。同时建立一个验证操作实现的主函数文件queue.cpp,编译并调试程序,直到正确运行。 说明:队列的基本操作可包括:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 任务书
限制150内