第一章 线性表
1. 编写一个将给定的线性链表逆转的C 函数,只允许改变结点的指针值,不允许移动结点值。给出调用方法。
1 | /* |
2. 对于给定的线性链表,编写一个把值为a的结点插在值为b的结点的前面的C函数。若值为b的结点不在线性链表中,则把a插在链表的最后。
1 | //分两种情况:带表头结点和不带表头结点,必须考虑链表为空的情况。函数参数部分的“?”请自己补充,并分别给出调用方法。 |
3. 对比P33页的程序,说明利用带表头结点的环形链表使得程序段发生了什么变化,为什么?
判断两链是否为空时条件发生变化。带表头结点时只有当两个表都遍历完以后才会结束循环
原因:表头结点的exp字段为-1,当其中一个遍历完后其exp值始终为-1向后进行的一定是另一个环形链表,而且一定会结束。
4. 假设A和B是两个按结点值从小到大排列的有序环形链表。试编写一个将这两个有序的环形链表归并为一个按节点值从小到大排列的有序环形链表的C函数。
1 | NODE * MergeLinkList(NODE* A,NODE * B) |
5.求广义表的深度。我们规定空的广义表的深度为0,而一般地有&¥#¥#!@#——)^%()%^
看不懂