《数据结构》课程实验指导书.docx
数据构造课程实 验 指 导 书河南理工大学地理信息系统专业2023年 九月前 言数据构造是计算机科学与技术及 GIS 专业的一门重要专业根底课,它主要介绍线性构造、树型构造、图状构造三种规律构造的存储实现,在此根底上介绍一些典型算法,以及算法的时间、空间效率分析。这门课程的主要任务是培育学生的算法设计力气及良好的程序设计习惯。通过本课程的学习,使学生娴熟地把握数据构造的内在规律关系及其在计算机中的表示方法存储构造,以及相关根本操作的算法实现;把握典型算法的设计思想及程序实现;生疏各种数据构造在 GIS 软件开发、程序设计中的根本应用;培育和训练学生结合实际应用,依据实际问题选取适宜的数据构造、存储方案设计出简洁、高效、有用的算法;并为学习空间数据库原理、GIS 设计与开发等后续课程和研制开发各种系统和应用软件打下扎实的理论与实践根底。学习这门课程,习题和试验是两个关键环节。学生理解算法,上机试验是最正确的途径之一。因此,试验环节的好坏是学生能否学好数据构造的关键。为了更好地协作学生试验,特编写此试验指导书。试验指导书依据试验教学大纲的要求,为每个主要的学问点精选了的典型的试验题目,对每个试验题目提出具体实现要求,并对算法的实现进展提示,期望对同学们完成试验有所帮助。名目试验一 线性表的链表实现类的设计1试验二 挨次栈的自定义类设计2试验三 字符串的操作类设计3试验四 树和二叉树的自定义类的设计4试验五 图的最短路径算法设计5试验六 自定义类应用综合设计6试验一线性表的链表实现类的设计试验类型: 验证性试验学时:2 学时一、试验目的:1、 把握 C+面对对象类的设计和用VC+上机调试线性表的根本方法;2、 把握线性表的根本操作,如插入、删除、查找,以及线性表合并等运算在链式存储构造上的运算;并能够运用线性表根本操作解决问题,实现相应算法。二、试验要求:1、 C+完成类的设计及根本操作算法并上机调试通过。2、 撰写试验报告,供给试验结果和数据。三、试验内容:设计你的线性表的链式存储构造类,编程实现通过键盘输入数据建立链表、查找、插入结点、删除结点、显示链表以及两链表的合并运算等操作。测试数据例如:(1) 以 L1=0, 5, 9, 10, 12, 12, 17, 20, 24构造链表;(2) 找到重复的其次个元素 12 并删除它;(3) 在第五个元素后插入 55;(4) 生成L2 = 33, 45, 50的链表并将它与L1 的链表合并。注: 也可以完成课本其次章习题 2.14 题P85的代码设计作为本次课堂试验内容。四、仪器设备: 计算机、VC+编译环境五、试验方法:用 C+语言设计类,并实现相关类的根本操作,程序在VC+环境下调试通过。并选择恰当的测试数据验证算法的正确性。六、试验步骤:1、 在上机前提前完成设计代码;2、 程序调试通过,可运行;3、 通过测试数据和对象方法调用验证算法正确性。七、试验结果处理:对程序调试中的问题要进展总结。八、试验留意事项:独立完成试验及试验报告,抄袭者不给成绩。九、预习与思考题:见课堂讲授课件和作业布置。十、试验报告要求:本门课程试验报告格式见 附件 1,鼓舞手写,可以打印。试验二挨次栈的自定义类设计试验类型: 验证性试验学时:2 学时一、试验目的:1、 把握用VC+上机调试通过栈的挨次存储构造类的设计;2、 把握挨次栈的根本操作,如进栈、出栈、推断栈空和栈满,取栈顶元素等运算在挨次存储构造上的运算;并能够运用栈的根本操作解决问题,实现相应算法。二、试验要求:1、 C+完成类的设计及根本操作算法并上机调试通过。2、 撰写试验报告,供给试验结果和数据。三、试验内容:设计你的栈的挨次存储构造类,编程实现栈的根本操作。栈中的数据元素类型最好为字符类型,便利今后对字符串的算法设计和应用。测试数据例如:(1) 以“ABCDEFG”的字符串挨次进栈;(2) 以适宜挨次出栈得到序列“CDBAGFE”;(3) 取栈顶元素得到F;(4) 进栈直到栈满和出栈直到栈空,检验对这两种情形的正确推断和处理。注: 也可以完成课本第三章习题 3.13 题P132的代码设计作为本次课堂试验内容。四、仪器设备: 计算机、VC+编译环境五、试验方法:用 C+语言设计类,并实现相关类的根本操作,程序在VC+环境下调试通过。并选择恰当的测试数据验证算法的正确性。六、试验步骤:1、 在上机前提前完成设计代码;2、 程序调试通过,可运行;3、 通过测试数据和对象方法调用验证算法正确性。七、试验结果处理:对程序调试中的问题要进展总结。八、试验留意事项:独立完成试验及试验报告,抄袭者不给成绩。九、预习与思考题:见课堂讲授课件和作业布置。十、试验报告要求:本门课程试验报告格式见 附件 1,鼓舞手写,可以打印。试验三字符串的操作类设计试验类型: 验证性试验学时:2 学时一、试验目的:1、 把握动态安排空间的字符串的挨次存储类的设计;2、 把握实现字符串的根本操作,如求串的长度、串的比较、复制、串的连接,取子串、子串匹配定位和串替换等运算。二、试验要求:1、 C+完成类的设计并上机调试通过。2、 撰写试验报告,供给试验结果和数据。三、试验内容:用堆安排存储表示串,实现串的比较、复制、串的连接,取子串、子串匹配定位和串替换等根本操作。测试数据例如:(1) 以“abcde”构造一个串s1,以“gabcdef”构造另一个串s2;(2) 比较s1 和s2 是否相等;(3) 在 s2 中定位s1 子串;(4) 复制s2 串并连接在s1 串后。注: 也可以完成课本第四章习题 4.17 题P185的代码设计作为本次课堂试验内容。四、仪器设备: 计算机、VC+编译环境五、试验方法:用 C+语言设计类,并实现相关类的根本操作,程序在VC+环境下调试通过。并选择恰当的测试数据验证算法的正确性。六、试验步骤:1、 在上机前提前完成设计代码;2、 程序调试通过,可运行;3、 通过测试数据和对象方法调用验证算法正确性。七、试验结果处理:对程序调试中的问题要进展总结。八、试验留意事项:独立完成试验及试验报告,抄袭者不给成绩。九、预习与思考题:见课堂讲授课件和作业布置。十、试验报告要求:本门课程试验报告格式见 附件 1,鼓舞手写,可以打印。试验四树和二叉树的自定义类的设计试验类型: 验证性试验学时:2 学时一、试验目的:1、 进一步把握树的构造及非线性特点,递归特点和动态性。2、 稳固对指针的使用和二叉树的三种遍历方法、建立方法及树的输入输出。二、试验要求:1、 C+完成类的设计并上机调试通过。2、 撰写试验报告,供给试验结果和数据。三、试验内容:实现二叉树的遍历,实现先序、中序和后序递归遍历算法; 利用栈实现二叉树先序、中序遍历的非递归算法。测试数据例如:(1) 以层序遍历序列为 abcdefghijklmn 构造一棵二叉树;(2) 分别输出其先序、中序和后序遍历结果;注: 也可以完成课本第五章习题 5.37 题P250的代码设计作为本次课堂试验内容。四、仪器设备: 计算机、VC+编译环境五、试验方法:用 C+语言设计类,并实现相关类的根本操作,程序在VC+环境下调试通过。并选择恰当的测试数据验证算法的正确性。六、试验步骤:1、 在上机前提前完成设计代码;2、 程序调试通过,可运行;3、 通过测试数据和对象方法调用验证算法正确性。七、试验结果处理:对程序调试中的问题要进展总结。八、试验留意事项:独立完成试验及试验报告,抄袭者不给成绩。九、预习与思考题:见课堂讲授课件和作业布置。十、试验报告要求:本门课程试验报告格式见 附件 1,鼓舞手写,可以打印。试验五 图的最短路径算法设计试验类型: 验证性试验学时:2 学时一、试验目的:了解最短路径的概念,把握求最短路径的方法(Dijkstra 算法或Floyd 算法)。二、试验要求:1、 C+完成图的相关类及算法的设计并上机调试通过。2、 撰写试验报告,供给试验结果和数据。三、试验内容:建立一个包含 6 个结点的带权有向图,并求顶点V0到其它顶点的最短路径。测试数据由同学们自行选择。注: 也可以完成课本第八章习题 8.23 题P395的代码设计作为本次课堂试验内容。四、仪器设备: 计算机、VC+编译环境五、试验方法:用 C+语言设计类,并实现相关类的根本操作,程序在VC+环境下调试通过。并选择恰当的测试数据验证算法的正确性。六、试验步骤:1、 在上机前提前完成设计代码;2、 程序调试通过,可运行;3、 通过测试数据和对象方法调用验证算法正确性。七、试验结果处理:对程序调试中的问题要进展总结。八、试验留意事项:独立完成试验及试验报告,抄袭者不给成绩。九、预习与思考题:见课堂讲授课件和作业布置。十、试验报告要求:本门课程试验报告格式见 附件 1,鼓舞手写,可以打印。试验六 自定义类应用综合设计试验类型: 综合性试验学时:2 学时一、试验目的:1、 进一步把握各种数据构造的特点和适合解决问题的分析;2、 通过具体的有实际应用意义的问题解决和对前面设计的类的使用进一步提高程序设计力气和算法设计、分析力气。3、 考察学生的程序设计中的规律思维力气和觉察软件开发人才。二、试验要求:1、 完成程序或简洁系统的设计并上机调试通过。2、 撰写试验报告,供给试验结果和数据。三、试验内容:从下面给出的题目中选做其中的一题多做可加分:1. 约瑟夫环问题1问题描述:有编号为1, 2n 的 n 个人按顺时针方向围坐一圈,每人持有一个正整数密码。开头给定一个正整数 m,从第一个人按顺时针方向自1 开头报数,报到m 者出列,不再参与报数,这时将出列者的密码作为m,从出列者顺时针方向的下一人开头重自 1 开头报数。如此下去,直到全部人都出列。试设计算法,输出出列者的序列。2试验要求: 承受链式存储构造实现。3) 实现提示:用链式存储解决此问题时可以承受循环链表。2. 停车场治理问题1) 问题描述:设有一个可以停放 n 辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场的早晚依次从停车场最里面对大门口处停放(最先到达的第一 辆车放在停车场的最里面)。假设停车场已放满 n 辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车走开,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必需先退出停车场为它让路, 待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。假设停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且照旧保持在便道上等待的车辆的次序。编写程序模拟该停车场的治理。2) 试验要求: 要求程序输出每辆车到达后的停车位置停车场或便道上,以及某辆车离开停车场时应缴纳的费用和他在停车场内停留的时间。 3实现提示:以栈模拟停车场,以队列模拟便道,依据从终端读入的车辆“到达”“离开”信息模拟停车场治理。3. 实现一个哈夫曼编/译码系统 1问题描述:利用哈夫曼编码进展信息通信可以大大提高信道利用率,缩短信息传输 时间,降低传输本钱。但是,这要求在发送端通过一个编码系统对待传输数据预先编码, 在接收端将传来的数据进展译码。对于双工信道,每端都需要一个完整的编码/译码系 统。试为这样的信息收发站写一个哈夫曼的编/译码系统。 2试验要求:一个完整的系统应具有以下功能:(1) I:初始化(Initialization)。从终端读入字符集大小 n,以及 n 个字符和n 个权值, 建立哈夫曼树,并将它存于文件hfmTree 中。(2) E:编码(Encoding)。利用已建好的哈夫曼树对文件ToBeTran 中的正文进展编码, 然后将结果存入文件CodeFile 中。(3) D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile 中的代码进展译码, 结果存入文件TextFile 中。(4) P:打印代码文件(Print)。将文件CodeFile 以紧凑格式显示在终端上,每行 50 个代码。同时将此字符形式的编码文件写入文件CodePrin 中。(5) T:打印哈夫曼树(Tree printing)。将已在内存中的哈夫曼树以直观的方式显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint 中。3) 实现提示:(1) 文件CodeFile 的基类型可以设为字节型。(2) 用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“ Q”,表示退出运行 Quit。请用户键入一个选择功能符。此功能执行完毕后再显示此菜单,直至某次用户选择了“E”为止。(3) 在程序的一次执行过程中,第一次执行I、D 或 C 命令之后,哈夫曼树已经在内存了,不必再读入。每次执行中不愿定执行I 命令,由于文件hfmTree 可能早已建好。4. 利用最小生成树算法解决通信网的总造价最低问题1问题描述:假设在 n 个城市之间建通信网络,秩序架设 n-1 条线路即可。如何以最低的经济代价建设这个通信网,是一个网络的最小生成树问题。 2试验要求:利用克鲁斯卡尔算法求网的最小生成树3) 实现提示:通信线路一旦建立,必定是双向的。因此,构造最小生成树的网确定是无向网。为简洁起见,图的顶点数不超过10 个,网中边的权值设置成小于 100。5. 教学打算编制问题 1问题描述:软件专业的学生要学习一系列课程,其中有些课程必需在其先修课完成 后才能学习。 2试验要求:假设每门课程的学习时间为一个学期,试为该专业的学生设计教学打算, 使他们能在最短时间内修完专业要求的全部课程。3) 实现提示:以顶点代表课程,弧代表课程的先后修关系,按课程先后关系建立有向无环图。利用拓扑排序实现。6. 公交线路优化路径的查询【问题描述】对于某城市的公交线路,乘坐公交的顾客期望在这样的线路上实现各种优化路径的查询。设该城市的公交线路的输入格式为:线路编号:起始站名(该站坐标);经过的站点 1 名(该站坐标);经过的站点 2 名(该站坐标);经过的站点 n 名(该站坐标);终点站名(该站坐标)。该线路的乘坐价钱。该线路平均经过多少时间来一辆。车速。例如:63:A(32,45);B(76,45);C(76,90);N(100,100) 。1 元。5 分钟。150 米/每分钟。假定线路的乘坐价钱与乘坐站数无关,假定不考虑公交线路在路上的交通堵塞。对这样的公交线路,需要在其上进展的优化路径查询包括:任何两个站点之间最廉价的路径;任何两个站点之间最省时间的路径。【设计要求】 依据上述公交线路的输入格式,定义并建立适宜的图模型。 针对上述公交线路,能查询获得任何两个站点之间最廉价的路径,即输入站名S,T 后,可以输出从S 到T 的最廉价的路径,输出格式为:线路x :站名S,站名M1 ;换乘线路x :站名M1,站名M2;换乘线路x:站名MK,站名T。共花费 x 元。 针对上述公交线路,能查询获得任何两个站点之间最省时间的路径不考虑在中间站等下一辆线路的等待时间,即输入站名S,T 后,可以输出从 S 到 T 的考虑在中间站等下一辆线路的等待时间的最省时间的路径,输出格式为:线路x:站名S, 站名 M1;换乘线路x:站名M1,站名M2;换乘线路x:站名MK,站名T。共花费x 时间。 针对上述公交线路,能查询获得任何两个站点之间最省时间的路径要考虑在中间站等下一辆线路的等待时间,即输入站名 S,T 后,可以输出从 S 到 T 的考虑在中间站等下一辆线路的等待时间的最省时间的路径,输出格式为:线路 x:站名 S,站名 M1;换乘线路 x:站名 M1,站名 M2;换乘线路 x:站名 MK,站名T。共花费 x 时间。四、仪器设备: 计算机、VC+编译环境五、试验方法:用 C+语言完成设计,程序在VC+环境下调试通过。并选择恰当的测试数据验证程序的正确性。六、试验步骤:1、 在上机前提前完成设计代码;2、 程序调试通过,可运行;3、 通过测试数据和对象方法调用验证算法正确性。七、试验结果处理:对程序调试中的问题要进展总结。八、试验留意事项:独立完成试验及试验报告,抄袭者不给成绩。九、预习与思考题:见课堂讲授课件和作业布置。十、试验报告要求:本门课程试验报告格式见 附件 1,鼓舞手写,可以打印。附件 1:测绘与国土信息工程学院数据构造课程试验报告姓名:学号:成绩:日期:试验一线性表的链表实现类的设计一、 需求分析本次程序设计要求建立一个以链表为储存方式的线性表,以及实现线性表所需求的各种功能。 对线性表的操作有:(1) 输入形式为从键盘输入,用户依据界面的提示从键盘直接输入所对应的数即可。输入的值要求为整数类型,用户输入其它类型的数据时例如字符串 会产生不行推想的错误。(2) 输出的界面为DOS 窗口,系统依据用户输入的数据类型,将会把相应的输出结果显示到界面上。(3) 程序可以建立一个以链表形式储存的线性表,对线性表可以进展查找、删除、插入、构造、销毁和猎取链表长度的操作。4以 L =0, 5, 9, 10, 12, 12, 17, 20, 24构造链表;找到重复的第1二个元素 12 并删除它;在第五个元素后插入 55;生成 L2= 33, 45, 50的链表并将它与 L1的链表合并。二、 概要设计链表结点的数据构造:struct LinkNode/链/int data;/数/表结点定义(数据类型为整形) 据域LinkNode* link;/指/ 针域LinkNode(LinkNode* ptr = NULL)/仅/初始化指针成员的构造函数link = ptr;/初始化数据和指针成员的构造函数LinkNode(const int x, LinkNode* ptr = NULL)data = x; link = ptr;链表类:class List/带/ public:头结点的单链表类的定义Listfirst = new LinkNode;构/造函数List(const int x)first = new LinkNode(x); 构/造函数List(List& L);/复/List制构造函数MakeEmpty;/使/ delete first; /删/链表为空表 除附加头结点void MakeEmpty; /将/ int Lengthconst; /计/链表置为空表,保存头结点算链表长度LinkNode* Search(int x); /搜/ 索含数据x 的结点LinkNode* Locate(int i); /返/ 回第i 个元素的地址LinkNode* GetHeadconst return first; 获/取头结点地址int GetData(int i);/取/ 出第i 个元素的值void SetData(int i, int x);/用/ x 修改第i 个元素的值bool Insert(int i, int x);/在/ 链表的第i 个元素后插入xbool Remove(int i, int& x);删/除第i 个元素,通过x 返回其元素值void AddTail(int x);/在/ 链表尾部添加元素xvoid DeleteRepeatedElem;/删/ 除表中重复元素void MergeList(List& L); /将/ 链表L 链接在当前链表尾部bool IsEmptyconst/判/ 断表空return first->link = NULL ? true : false;void Input;/输/ 入数据元素,建立表void Display;/显/ 示表中元素List& operator = (List& L); /重/载操作符:赋值“=“ private:LinkNode* first;三、 具体设计List:List(List& L)/复/制构造函数int val;LinkNode * srcPtr = L.GetHead;/被/ 复制表的头结点地址LinkNode * desPtr = first = new LinkNode; 生/成头结点while(srcPtr->link != NULL)/逐/ 个结点复制val = srcPtr->link->data;desPtr->link = new LinkNode(val); /开/辟结点内存,并为数据域赋值XdesPtr = desPtr->link; srcPtr = srcPtr->link;desPtr->link = NULL;void List:MakeEmpty /将/链表置为空表,保存头结点LinkNode * p;while(first->link!=NULL)/当/链不为空时,删除链中全部结点p = first->link;first->link = p->link; /保/ delete p;/删/存被删除结点的下一结点地址除从链上摘下的结点int List:Lengthconst /计/算链表长度LinkNode * p = first->link; int length = 0;while(p!= NULL)/扫描直到链尾p = p->link; length +;return length;LinkNode* List:Search(int x) /搜/ 索含数据x 的结点,返回结点地址LinkNode * p = first->link;while(p!= NULL)/扫描直到链尾,找含有数据x 的结点if(p->data = x) break; else p = p->link;return p;LinkNode* List:Locate(int i) /返/ 回第i 个元素的地址if(i < 0) return NULL; /i不合理,返回空指针 LinkNode* p = first->link;int k = 1;while(p!= NULL && k < i)/扫/描直到链尾,找第i 个结点p = p->link; k+;return p;int List:GetData(int i)/取/ 出第i 个元素的值if(i <= 0) return -1000000; /不i LinkNode* p = Locate(i);合理,返回一个负值if(p = NULL) return -1000000; /过i else return p->data;大,返回一个负值void List:SetData(int i, int x)/用/x 修改第i 个元素的值if(i <= 0) return;/i太小LinkNode* p = Locate(i); if(p = NULL) return; /i过大else p->data = x;bool List:Insert(int i, int x)/在/ 链表的第i 个元素后插入xLinkNode* p = Locate(i); if(p = NULL) return false;LinkNode * newNode = new LinkNode(x); if(newNode = NULL)cerr<<“存储安排错误!“<<endl; exit(1);newNode->link = p->link; p->link = newNode; return true;bool List:Remove(int i, int& x)/删/ 除第i 个元素,通过x 返回其元素值LinkNode* p = Locate(i-1);if(p = NULL | p->link = NULL) return false; LinkNode * del = p->link;p->link = del->link; x = del->data; delete del;return true;void List:AddTail(int x)/在/ 链表尾部添加元素xLinkNode *p = first; /p指向头结点while(p->link != NULL) /最/ 终让指针p 指向尾结点p = p->link;/ while/生成结点由指针q 指示LinkNode * newNode = new LinkNode(x); if(newNode = NULL)cerr<<“存储安排错误!“<<endl; exit(1);p->link = newNode;/给指针p->link重赋值newNode->link = NULL;/尾指针赋NULLvoid List:DeleteRepeatedElem/删/ 除表中重复元素int temp1, temp2, i, j; int length = Length;for(i = 1; i < length; i+)temp1 = GetData(i);for(j = i+1; j <= length; j+)temp2 = GetData(j); if(temp1 = temp2)Remove(j,temp1); /删除重复的结点 length-;/ if/ for(j = i+1; j <= length; j+)/ for(i = 1; i < length; i+)void List:MergeList(List& L) /将/ 链表L 链接在当前链表尾部LinkNode *p = first;/指p 向头结点LinkNode *q = L.GetHead; /指q 向L 头结点if(q->link = NULL) /链/表L 为空delete q;/释放L 的头结点return;while(p->link != NULL) /最/终让指针p 指向链表尾结点p = p->link;/whilewhile(q->link != NULL)/逐/ int val = q->link->data;个结点复制p->link = new LinkNode(val);Xp = p->link; q = q->link;开/辟结点内存,并为数据域赋值p->link = NULL;void List:Input/输/ 入数据元素,建立表int val=0;cout<<“请依次输入链表的数据元素(输入-1 完毕):n“; while(val!=-1)cin >> val;if(val!=-1) AddTail(val); else break;void List:Display /显/示表中元素if(IsEmpty)cout << “The list is empty!n“; return;/ifcout << “表中元素为: “ << “; LinkNode* p = first;while(p->link != NULL)p = p->link;if(p->link != NULL)cout << p->data << “, “; elsecout << p->data << “n“;/ whileList& List:operator = (List& L)/重/ 载操作符:赋值“=“int val;LinkNode * srcPtr = L.GetHead;/被/ 复制表的头结点地址LinkNode * desPtr;if(!IsEmpty)MakeEmpty;/如/ desPtr = first;果表非空,清空全部结点desPtr = first = new LinkNode; /生/ 成头结点while(srcPtr->link != NULL)/逐/ 个结点复制val = srcPtr->link->data;desPtr->link = new LinkNode(val); /开/辟结点内存,并为数据域赋值XdesPtr = desPtr->link; srcPtr = srcPtr->link;desPtr->link = NULL; return *this;四、 调试分析在调试过程中,觉察合并链表操作时不能简洁将其次个链表的结点链接在其次个链表尾部,而不重开拓存储空间如下面的代码所示,这样在对象析构时会消灭内存访问错误。void List:MergeList(List& L) /将/ 链表L 链接在当前链表尾部LinkNode *p = first;/指p 向头结点LinkNode *q = L.GetHead; /指q 向L 头结点if(q->link = NULL) return;/链/ 表L 为空while(p->link != NULL) /最/终让指针p 指向链表尾结点p = p->link;/whilep = q->link;/ 链表L 链接在链表尾部五、 用户使用说明本程序没有进展用户输入输出界面设计,所以用户在使用时,只是依据屏幕提示进展相关数据输入,对链表的具体操作过程,用户不能参与,有待今后完善。六、 运行结果显示程序主函数如下,输入测试数据后运行结果如以以下图所示:int main(int argc, char *argv)List L1; int d;L1.Input;/用户输入数据建立链表L1 L1.Display;L1.DeleteRepeatedElem;/删/ L1.Display; L1.Insert(5,55);/插入元素 L1.Display;除重复元素L1.Remove(6,d);/删除刚插入元素 L1.Display;List L2;L2.Input; /用户输入数据建立链表L2 L2.Display;L1.MergeList(L2); /链/ L1.Display;system(“PAUSE“); return EXIT_SUCCESS;表L2 与链表L1 合并七、 试验思考与小结对单链表的遍历访问操作方法说明白对尾结点指针域初始化的重要性,链表的操作中要留意修改指针地址前不要丧失了指针以前指向的地址。头结点的开拓确实简化了操作和代码,对链表内存空间的释放也说明白链表是一种递归构造,同时其内存是在不连续的堆空间上安排的。