C语言实现数据结构:顺序表插入与链表逆置

需积分: 10 1 下载量 118 浏览量 更新于2024-10-29 收藏 223KB PPT 举报
本资源包含了数据结构课程的四个课后作业题目,分别涉及顺序表的操作、顺序表的就地逆置、单链表的就地逆置以及两个递增排列的链表的合并。 1. 题目1(Insert_Sq函数):该题目要求实现一个函数`Insert_Sq`,将元素`x`插入到已排序的顺序表`va`中,保持其递增有序。函数首先检查顺序表是否已满,如果满了,则通过`realloc`动态扩展内存,避免溢出。然后通过循环找到`x`应插入的位置,并将位置后的元素向右移动,最后插入`x`并更新表的长度。这是对动态数组操作和排序算法的练习。 2. 题目2.11(Reverse_Sq算法1)与2.21:这两个题目都是关于顺序表的就地逆置,即将表中的元素顺序反转。算法1使用两个指针`i`和`j`,从两端向中间遍历交换元素;算法2则通过遍历表的一半,每次交换当前位置和对应末尾位置的元素。两种方法都实现了相同的功能,但实现方式略有不同。 3. 题目2.22(Reverse_LinkList函数):此题要求实现一个函数`Reverse_LinkList`,用于就地逆置带头结点的单链表。通过临时变量`q`保存当前节点的后继,将当前节点的`next`指针指向前一个节点(即头结点),然后移动指针完成逆置。这个函数展示了链表操作的基本技巧,包括遍历、改变节点链接关系等。 4. 题目2.22(Reverse_Merge函数):这个题目涉及到两个递增排列的链表`La`和`Lb`的合并。目标是创建一个新的链表`Lc`,其中包含`La`和`Lb`的所有元素,且新链表`Lc`也是递增排列的。函数首先初始化`Lc`,然后在`La`和`Lb`都不为空的情况下,比较它们的头节点元素,将较小的元素添加到`Lc`中,并将相应的链表头节点向前移动,直到其中一个链表为空。这样可以保证合并后的链表依然有序,同时使用了原链表的空间。 这些作业题目涵盖了数据结构中基本的线性结构操作,如顺序表的插入、反转和合并,以及单链表的反转,是理解数据结构和算法设计基础的重要实践。