考研计算机数据结构讲义
函数原型如下:
6,#,'"7464',#,'"?,;
答:6,#,'"7464',#,'"?,
-
,#,'"%$'/
%), (2"/$)% (2"/')$ (2"/% (2")9;,,/
1' (2"
-
$ (2")%/%)$/
$)'/')' (2"/
3
$ (2")%/' (2")$/, (2")'/
3
.写一算法,将带有头结点的非空单链表中数据域值最小的那个结点移到链表的最前面。要求:不
得额外申请新的链结点。函数原型如下:
6'4",#,'"?,;
答:6'4",#,'"?,
-
%), (2"/ **% 是链表的工作指针
%4),/ **%4 指向链表中数据域最小值结点的前驱
$)%/ **$ 指向数据域最小值结点,初始假定是第一结点
1% (2")9;,,
-
:% (2" ("$ (" **找到新的最小值结点
- %4)%/$)% (2"/3
%)% (2"/
3
:$), (2" **若最小值是第一元素结点,则不需再操作
-
%4 (2")$ (2"/ **将最小值结点从链表上摘下
$ (2"), (2"/ **将 $ 结点插到链表最前面
, (2")$/
3
3
.编写一个算法来交换单链表中指针 0 所指结点与其后继结点,8B 是该链表的头指针,0 指向
该链表中某一结点。
答:单链表中查找任何结点,都必须从头指针开始。本题要求将指针 % 所指结点与其后继结点交换,
这不仅要求知道 % 结点,还应知道 % 的前驱结点。这样才能在 % 与其后继结点交换后,由原 % 结点的
前驱来指向原 % 结点的后继结点。
,#,'"B2C(,#,'"8B,%)
D8B 是单链表头结点的指针,% 是链表中的一个结点。本算法将 % 所指结点与其后继结点交换。
-$) (2"; ∥$ 是工作指针,指向链表中当前待处理结点。
%4); ∥%4 是前驱结点指针,指向 $ 的前驱。
1($)5??$)%)-%4)$;$)$ (2";3D未找到 % 结点,后移指针。
:(% (2"))5)%4":(“ % 无后继结点EF)/D% 是链表中最后一个结点,无后继。
- 6 - 找到你人生中最重要的那件事,最终,实现它!