天天看点

不带头结点的单链表逆置c语言,设计不带头结点的单链表类模板,其功能是对链表中元素结点进行逆置.docx...

设计不带头结点的单链表类模板,其功能是对链表中元素结点进行逆置

设计不带头结点的单链表类模板,其功能是对链表中元素结点进行逆置

篇一:实验一 不带头结点形式的单链表   实验一 不带头结点形式的单链表   专业:软件工程班级:09软工 学号:1XX11041XX 姓名:XXX 实验日期:XX-09-30 实验地点:B102 指导老师:吴景岚 一、 问题描述   实现不带头结点形式的单链表。 二、工具/准备工作   .需要一台计算机,其中安装有Visual C++ 、Visual C++ XX、Visual C++ XX Express、Dev-C++或MinGW Developer Studio 等集成开发环境软件。 三、实验分析   在几乎所有数据结构与算法的教材中都在线性链表中使用头结点,其原因是使用了头结点编序更简洁,效率更高,如果读者具体实现不带头结点形式的单链表,则理解将更深入,对提高算法领悟力有所帮助。当一个不带头结点的单链表中没有数据元素时,这时便无结点,也就是first==NULL。对于不带头结点的单链表,第一个元素的前驱为空,其他元素则有非空的前驱,对于插入,删除等操作都需要对第一个元素单独进行讨论。对于其他操作可作类似的分析,读者在具体实现时,最好先画出示意图,然后再编写代码。 四、实验步骤 (1)建立工程simple_lk_list_without_head_node。   (2)将软件包中的和复制到simple_lk_list_without_head_node文件夹中,并将和加入到工程中。 (3)建立头文件simple_lk_list_without_head_node,声明不带头结点的单链表类,并实现相关的成员函数。   (4)建立源程序文件,实现main()函数。 (5)编译及运行不带头结点的单链表测试程序。   五、测试及结论   测试时,应注意尽量覆盖算法的各种情况,屏幕显示如下: 1.生成线性表 1.生成线性表 2.显示线性表 2.显示线性表 3.检索元素 3.检索元素 4.设置元素值 4.设置元素值 5.删除元素 5.删除元素 6.插入元素 6.插入元素 7.退出 7.退出   选择功能(1-7): 1 选择功能(1-7): 2 输入e(e=0时退出):1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9   1.生成线性表 1.生成线性表 2.显示线性表 2.显示线性表 3.检索元素 3.检索元素 4.设置元素值 4.设置元素值 5.删除元素 5.删除元素   6.插入元素 6.插入元素 7.退出 7.退出   选择功能(1-7): 3选择功能(1-7): 4 输入元素位置:3 输入位置:4   输入值:45   元素:3设置成功   1.生成线性表 1.生成线性表 2.显示线性表 2.显示线性表 3.检索元素 4.设置元素值5.删除元素 6.插入元素 7.退出 选择功能(1-7): 2 1 2 3 45 5 6 7 8 9   1.生成线性表2.显示线性表3.检索元素 4.设置元素值5.删除元素 6.插入元素 7.退出 选择功能(1-7): 2 1 2 3 5 6 7 8 9   1.生成线性表2.显示线性表3.检索元素 4.设置元素值5.删除元素 6.插入元素 7.退出 选择功能(1-7): 2 1 2 3 4 5 6 7 8 9 最终说明本程序满足实验目标和要求 六、课程设计总结   一、链表的建立   3.检索元素 4.设置元素值 5.删除元素 6.插入元素 7.退出   选择功能(1-7): 5 输入位置:4 被删除元素值:45 1.生成线性表 2.显示线性表 3.检索元素 4.设置元素值 5.删除元素 6.插入元素 7.退出   选择功能(1-7): 6 输入元素值:4 成功:4 1.生成线性表 2.显示线性表 3.检索元素 4.设置元素值 5.删除元素 6.插入元素 7.退出   选择功能(1-7):   New、delete动态分配内存空间 表头,结点,表尾的处理;   表头要从NULL开始处理,就是假设嘛,建立一种合理的拉手关系。这里要用两个指针来处理,一个指针指向新开辟的结点,另一个前一个结点。结点数够了时,还要开辟结点,但该结点是不进行拉手操作的。 二、链表的输出   链表的输出只需一个指针变量,通过不断的修改指针变量,就可以进行各个结点的输出。 三、结点的删除   结点的删除,也要考虑链表为空的情况   从第一个结点开始查起,遍历每个结点,找出要删除的结点,