计算机二级C 单链表操:作交换节点计算机等级考试

文章作者 100test 发表时间 2010:01:01 12:58:39
来源 100Test.Com百考试题网


  链表是最为常见,并且经常需要使用到的数据结构之一。对于单链表的基本操作,例如创建链表、插入、删除等都不是特别复杂,但是其实对于链表的操作实际上很多的操作还是有一定的难度,例如上次给出的单链表的逆转,以及这里的单链表交换两个节点。
  单链表的交换节点的含义是:给定一个单链表,要求交换其中的任意两个节点。注意这里链表的头节点是不参与节点交换的。这个看上去是比较简单,但是实现起来却还是需要一定的基本功。
  对于这个问题,关键是要用4个指针来保存两个交换的节点的前后节点位置,具体实现请参见实现源码。实际上,还有一个逻辑更加清晰的实现:只要用两个指针保存当前的两个交换节点的前一个节点,然后依次删除待交换节点,再在记录的前一个节点后交替插入删除的两个节点,也就是实际上将这个过程转化为了对于链表的两个基本操作就可以完成了。但是要注意的是,这个实现中当两个交换节点是相邻节点的时候会出现问题,要单独处理,具体原因手工操作一次即可得知。后一种方法这里就不给出了。
  实现代码中要说明的是,交换链表节点传入的是两个交换节点指针,但是为了测试简单实现,将这两个节点换成了待交换节点的关键字(值域),再到链表中定位。
  具体实现源码为:
  //Link.h
  #include

相关文章


辅导:C 和C#编写并且相互调用COM组件计算机等级考试
计算机二级C 基础:何为POD对象计算机等级考试
父子进程:exec计算机等级考试
C 运算符优先级列表计算机等级考试
计算机二级C 单链表操:作交换节点计算机等级考试
拨号上网IP地址的检知计算机等级考试
C 中的IPv6网络程序设计计算机等级考试
C 对象是怎么死的?Win32线程篇计算机等级考试
VC中隐藏对话框窗口计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛