以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  学习反转单链表  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=88047)


--  作者:葛靖青001
--  发布时间:11/30/2010 8:55:00 AM

--  学习反转单链表
【转自互联网】

算法导论里的一道题目,也是很经典的题目,遍地都是,更常常以面试题面孔出现。下面给出一种思路,时间为O(N),N为节点数或者说链表长度

  //前置条件:head指向链表的首节点

  //后置条件:函数返回反转后指向首节点的指针,也即原链表最后一个元素。

  node* Reverse(node* &head)

  {

  node *temp;

  node *p1,*p2,*p3;

  if(head==NULL)

  return NULL;

  if(head->next==NULL)

  return head;

  //至少两个节点

  else

  {

  p1=head;

  p2=head->next;

  p3=p2->next;

  head->next=NULL;

  do

  {

  p2->next=p1;

  p1=p2;

  p2=p3;

  if(p3)//少了判断就会程序出错

  {

  p3=p3->next;

  }

  }while(p2);

  head=p1;

  return head;

  }

  }


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
15,078.130ms