单链表
实验目的:
(1)熟练掌握线性表的单链式存储结构及在其上实现线性表的各种基本运算的方法。
(2)掌握和理解本实验中出现的一些基本的C语言语句。
(3)体会算法在程序设计中的重要性。
实验内容:
(1)设计一算法,逆置带头结点的动态单链表head。要求利用原表的结点空间,并要求用尽可能少的时间完成。
(2)设有两个按元素值递增有序的单链表A和B,编一程序将A表和B表归并成一个新的递增有序的单链表C(值相同的元素均保留在C表中),并要求利用原表的空间存放C。
设有线性表A=(a1,a2,…am),B=(b1,b2,…bn)。试写一合并A、B为线性表C的算法,使得
假设A.B均以单链表为存储结构(并且m、n显式保存)。要求C也以单链表为存储结构并利用单链表A、B的结点空间。
A.链表中的头结点仅起到标识的作用
B.链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高
C.链接存储的特点是利用指针来表示数据元素之间的逻辑关系
D.对于双向链表在两个结点之间插入一个新结点需修改的指针共4个,单链表为2个
试分别以顺序表和单链表作存储结构,各写一个实现线性表的自身(即使用尽可能少的附加空间)逆置的算法,在原表的存储空间内将线性表(a1,a2,…an)逆置为(an,…a2,a1)。
放被删结点空间,并分析你的算法的时间复杂度(注意,mink和maxk是给定的两个参变量,它们的值可以和表中的元素相同,也可以不同)。