免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5389 | 回复: 9
打印 上一主题 下一主题

请高手给我解决一个链表倒序的问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-10-11 13:53 |只看该作者 |倒序浏览
有一个单向排序的链表,现要求将其倒序排列,假设不申请新的节点,链表头名称为head,两个工作指针为a和b,用c++处理,哪位高手给指点一下,谢谢!

论坛徽章:
0
2 [报告]
发表于 2003-10-11 14:17 |只看该作者

请高手给我解决一个链表倒序的问题!

为什么没有人理我?

论坛徽章:
0
3 [报告]
发表于 2003-10-11 14:44 |只看该作者

请高手给我解决一个链表倒序的问题!

第1个元素的值和第n个元素值互换,第2和第n-1个元素的值互换,注意分n是奇数和偶数的情况

论坛徽章:
0
4 [报告]
发表于 2003-10-11 15:02 |只看该作者

请高手给我解决一个链表倒序的问题!

xa_butterfly ,能给写一下具体代码吗?或大致结构!

论坛徽章:
0
5 [报告]
发表于 2003-10-11 15:06 |只看该作者

请高手给我解决一个链表倒序的问题!

并且如果我不知道元素个数的话怎么办?

论坛徽章:
0
6 [报告]
发表于 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;
                  }
          }

论坛徽章:
0
7 [报告]
发表于 2003-10-11 16:23 |只看该作者

请高手给我解决一个链表倒序的问题!

谢谢了!如果我知道元素个数的话可以只使用两个指针实现吗?

论坛徽章:
0
8 [报告]
发表于 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;
                  }
          }

论坛徽章:
0
9 [报告]
发表于 2003-10-11 18:39 |只看该作者

请高手给我解决一个链表倒序的问题!

递归解决。

论坛徽章:
0
10 [报告]
发表于 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. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP