《数据结构与算法》实验一报告
一、目的和要求(需求分析)
1、掌握数据的链式存储结构以及链表的建立和操作。
2、利用链表的原空间进行链表的反转;
(设计一个将输入数据建立成链表、并依次输出链表数据、利用原空间把链表反转的程序。)
二、程序设计的基本思想,原理和算法描述
(包括程序的结构,数据结构,输入/输出设计,符号名说明等)
1. 建立一个带有头结点的空链表。
2. 输入链表中元素的个数。
3. 创建新结点,利用尾插法将新结点插入到链表尾部。
4. 利用for循环语句完成链表元素的输入。
5. 依次输出单链表的结点值。
6. 就地反转。
7. 依次输出反转后的单链表的结点值。
8. 销毁链表。
三、调试和运行程序过程中产生的问题及采取的措施
1. 产生问题:刚开始不知道如何建立一个链表。
采取措施:通过看老师的ppt、查阅相关书籍以及网上的资料,学习了头插法和尾插法创建链表。
2. 产生问题:起先将头结点作为局部变量,代码运行不了。
采取措施:① 自己采取了将头结点变成全局变量的方法。
② 在询问老师后知道了还可以返回头结点供后续操作使用的方法。
3. 产生问题:刚开始没有就地反转的思路。
采取措施:① 通过画图理思路。在草稿纸上模拟一遍链表反转,用不同颜色的笔标注出反转的各个步骤,使思路更加明了。
② 通过老师上机课前的讲解和学习ppt,使思路更加清晰。
4. 产生问题:没有考虑到销毁链表。
采取措施:通过查找资料学习了销毁链表。
四、源程序及注释
五、运行输出结果(截图与必要的文字说明)
六、心得与体会
通过这次实验,我掌握了链表的相关操作,比如:头插法尾插法创建链表、就地反转、销毁链表等等。同时,我明白了画图理思路的重要性,对链表进行操作时可以先在草稿纸上画图,通过画图模拟一遍指针的移动,对我们完成程序有事半功倍的效果。并且,我也认识到“纸上得来终觉浅”,不能光听老师上理论课,还要多实践多操作。最重要的是,我知道了借助资料、书籍、网络的重要性。