1 / 23
文档名称:

数据结构实验二.doc

格式:doc   大小:22KB   页数:23页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构实验二.doc

上传人:wz_198614 2017/6/6 文件大小:22 KB

下载得到文件列表

数据结构实验二.doc

文档介绍

文档介绍:------------------------------------------------------------------------------------------------ ——————————————————————————————————————数据结构实验二《数据结构》实验报告二学校: 班级: 姓名: 程序名: 学号: 日期: 一、上机实验的问题和要求: 单链表的查找、插入与删除。设计算法, 实现线性结构上的单链表的产生以及元素的查找、插入与删除。具体实现要求: 1. 从键盘输入 20 个整数, 产生不带表头的单链表, 并输入结点值。 2. 从键盘输入 1 个整数,在单链表中查找该结点的位置。若找到,则显示“找到了”;否则,则显示“找不到”。 3. 从键盘输入 2 个整数, 一个表示欲插入的位置 i, 另一个表示欲插入的数值 x ,将 x插入在对应位置上,输出单链表所有结点值,观察输出结果。 4. 从键盘输入 1 个整数,表示欲删除结点的位置,输出单链表所有结点值,观察输出结果。 5. 将单链表中值重复的结点删除,使所得的结果表中个结点值均不相同,输出单链表所有结点值,观察输出结果。------------------------------------------------------------------------------------------------ —————————————————————————————————————— 6. 删除其中所有数据值为偶数的结点, 输出单链表所有结点值, 观察输出结果。 7. 把单链表变成带表头结点的循环链表,输出循环单链表所有结点值,观察输出结果。 8.(★)将单链表分解成两个单链表 A和B ,使 A 链表中含有原链表中序号为奇数的元素,而B 链表中含有原链表中序号为偶数的元素, 且保持原来的相对顺序, 分别输出单链表 A 和单链表 B 的所有结点值, 观察输出结果。二、程序设计的基本思想,原理和算法描述: (包括程序的结构, 数据结构, 输入/ 输出设计, 符号名说明等) 这是一个带头结点的线性链表, 数据域存放整形数据, 由用户输入。头结点数据域存链表长度,所以程序中有个求链表长度的函数 int LengthList(LinkList L); // 求链表长度 L 是指向头结点的指针,将长度值存入语句为 L->data = LengthList(L); 为了实时观察链表情况,程序中有个输出链表数据的函数 void PrintList(LinkList L); // 输出链表程序可以实现 8 种不同的操作,这8 种不同的操作由 8 个函数实现,分别是 void Cre ateList(LinkList &L); // 创建链表 void Locate(LinkList L); // 查询数值------------------------------------------------------------------------------------------------ —————————————————————————————————————— void InsertList(LinkList &L); // 插入数值 1 void DeleteList(LinkList &L); // 选择删除 void Deleterepeat(LinkList &L); // 删除重复结点 void DeleteEven(LinkList &L); // 删除数值为偶数的结点 void Rotate(LinkList &L); // 变为循环链表 void Divide(LinkList &L); // 分解成两个链表这些基本操作的实现算法都比较简单, 有些跟书本上一样, 有些需要自己稍作思考才能写出,具体程序见第三部分 8 种不同的操作可以由用户通过按 A-H 这八个字母键来选择,分别是 A: 创建 B: 查询 C: 插入 D: 选择删除 E: 删除重复 F: 删除偶数 G: 变为循环链表 H: 分解为两个链表,见第四部分输出截图,可以清晰的看到整个过程主程序中用开关语句实现: char operate; printf("\n\n 输入字符选择链表操作类型\nA: 创建 B: 查询 C: 插入 D: 选择删除 E: 删除重复 F: 删除偶数\nG: 变为循环链表 H: 分解为两个链表\n"); scanf("%c",&operate); switch (operate) { -----------------------------------------------