Chinaunix

标题: 请高手给我解决一个链表倒序的问题! [打印本页]

作者: SanMaoEr    时间: 2003-10-11 13:53
标题: 请高手给我解决一个链表倒序的问题!
有一个单向排序的链表,现要求将其倒序排列,假设不申请新的节点,链表头名称为head,两个工作指针为a和b,用c++处理,哪位高手给指点一下,谢谢!
作者: SanMaoEr    时间: 2003-10-11 14:17
标题: 请高手给我解决一个链表倒序的问题!
为什么没有人理我?
作者: xa_butterfly    时间: 2003-10-11 14:44
标题: 请高手给我解决一个链表倒序的问题!
第1个元素的值和第n个元素值互换,第2和第n-1个元素的值互换,注意分n是奇数和偶数的情况
作者: SanMaoEr    时间: 2003-10-11 15:02
标题: 请高手给我解决一个链表倒序的问题!
xa_butterfly ,能给写一下具体代码吗?或大致结构!
作者: SanMaoEr    时间: 2003-10-11 15:06
标题: 请高手给我解决一个链表倒序的问题!
并且如果我不知道元素个数的话怎么办?
作者: flyingbear    时间: 2003-10-11 16:04
标题: 请高手给我解决一个链表倒序的问题!
多用了一个指针pc,没有申请新节点的例子代码,你参考一下:

          for(pa = phead,pb=pa->;next,pc=pb->;next;pa!=NULL&&pb!=NULL
          {
                  if(pa == phead)
                          pa->;next = 0;
                  pb->;next = pa;
                  pa = pb;
                  pb = pc;
                  if(pc)
                  {
                          if(pc->;next == NULL)
                                  phead = pc;
                          pc = pc->;next;
                  }
          }
作者: SanMaoEr    时间: 2003-10-11 16:23
标题: 请高手给我解决一个链表倒序的问题!
谢谢了!如果我知道元素个数的话可以只使用两个指针实现吗?
作者: flyingbear    时间: 2003-10-11 16:31
标题: 请高手给我解决一个链表倒序的问题!
再稍微想了一下,这样就可以不用多一个指针了。
因为我是现写的代码,如果有什么bug,请告诉我
          for(pa=phead->;next,pb=pa->;next;phead!=NULL&&pa!=NULL
          {
                  pa->;next = phead;
                  if(phead->;next  ==  pa)phead->;next = 0;
                  phead = pa;
                  pa = pb;
                  if(pb)
                  {
                          pb = pb->;next;
                  }
          }
作者: JohnBull    时间: 2003-10-11 18:39
标题: 请高手给我解决一个链表倒序的问题!
递归解决。
作者: hbczjzc    时间: 2003-10-12 06:37
标题: 请高手给我解决一个链表倒序的问题!

  1. Link invert_List(Link Head)
  2. {
  3.      Link p;
  4.      Link q;
  5.      q=Head;
  6.      p=q->;next;
  7.      q->;next=NULL;

  8.     Head=p->;next;
  9.     p->;next=q;
  10.     q=p;
  11.     p=Head;

  12.    while ( p->;next != NULL )
  13.    {
  14.      Head=p->;next;
  15.     p->;next=q;
  16.     q=p;
  17.     p=Head;
  18.    }
  19.    p->;next=q;
  20.    Head=p;
  21.    return Head;
  22. }
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2