单向链表的反转

原创 2013年12月05日 21:28:37

今天晚上闲着没事干,复习复习链表反转,因为自己不是学计算机专业的,所以基础知识比较薄弱,总是会把看过的东西忘掉,所以要多复习,以便不时之需。

单向链表反转其实很简单,有两种常规方式:

1. 循环遍历完成反转。

这种方法比较简单,就是用两个指针,和一个辅助指针,pre, cur , ne , 分别指向head,head->next, head->next->next,节点,也就是前三个节点。

然后把 pre  = cur , cur = ne, ne = ne->next, 代码:

struct link {

int data;

       link* next;

}


void reverse(linka*& head)
void reverse(link *& head)

{

link* pre, cur , ne;

       pre  = head;

      cur    = head - >next;

while (cur)

      {

ne = cur - >next;

                cur -> next = pre; 

                pre = cur;

                cur = ne;

       }


        head ->next = NULL;

        head = pre;

}


简单的很,我就是这么笨,这么简单的代码还要写半天,大神勿喷。。。


下面介绍递归的算法:


link* reverse(link* p, link*& head)

{

if( p == NULL || p - > next == NULL)

        {

head = p;

return p;

}

         else

{

link* tmp = reverse(p->next, head);

tmp->next = p;

       return p;

}

}


递归也是很简单的,看不懂的朋友可以跟我交流。

以后还是要多学习,多复习,形成习惯,不断提高自己的水平。为自己加油!

反转单向链表和反转双向链表

问题描述:反转单向链表和双向链表 要求:如果链表长度为N,时间复杂度要求为O(N),额外的空间复杂度要求为O(1)...
  • L_kanglin
  • L_kanglin
  • 2017年03月17日 20:32
  • 842

数据结构 反转单向链表和双向链表

程序员代码面试指南(左程云)读书笔记 第三章反转单向链表和双向链表//单向链表public class Node { public int value; public Node next; publi...
  • qq_33323162
  • qq_33323162
  • 2016年08月08日 11:21
  • 1160

单向链表反转(倒置)问题

今天遇到单向链表的反转的问题,于是静下心来好好想了一番。 解题思路如下图:假设当前创建好的链表如下:首先让头节点与第一个元素节点断开,但是要注意在断开之前需要用p指针指向第一个元素节点来保存第一个元...
  • blioo
  • blioo
  • 2017年03月14日 19:40
  • 7548

反转单链表 (三种方法整理)

题目:反转单链表 输入一个链表,反转链表后,输出链表的所有元素。 据找工作的师兄说,反转单链表基本各个公司面试都会有,整理出一些写的比较好的code,供我等小白们学习。简洁,清晰,...
  • hyqsong
  • hyqsong
  • 2015年10月26日 21:15
  • 20582

c++反转单链表后半部分

给出一个链表,将给定链表的后半个反转。如果链表中元素个数为奇数,则中间元素会成为反转的一部分;如果为偶数,中间元素不成为反转的一部分。中间的元素是第(N+1)/2个元素,N是总元素的个数。 示例: 输...
  • bladeandmaster88
  • bladeandmaster88
  • 2016年08月31日 20:23
  • 1311

反转单向链表

通过递归法反转一个单向链表,turnBack()为递归函数,head为最终保存的反向链表的头结点指针。...
  • u010350978
  • u010350978
  • 2014年09月25日 16:21
  • 506

单链表反转(带头结点版)

#ifndef REVERSE_LIST_H_INCLUDED #define REVERSE_LIST_H_INCLUDEDLinkList reverse_list(LinkList head) ...
  • weixin_36869329
  • weixin_36869329
  • 2017年03月20日 23:06
  • 152

单链表的反转(递归)

单项链表的反转指的是这样一类问题:给定一个单项链表的头指针 head,写一个算法,将其反转,并返回新的头指针 newHead。 注意点: (1)一般我们构建的单链表有两种,第一种是有头节点的单链表...
  • cyuyanenen
  • cyuyanenen
  • 2016年05月22日 10:15
  • 1225

实现单向链表的反转

1.可以用临时变量前移方式逐步实现反转。 利用前中后三个临时变量,逐步前移并反转实现 public static ListNode reverseListTest1(ListNode node){...
  • liusaoren
  • liusaoren
  • 2016年09月29日 10:29
  • 193

反转单向链表的实现

单向链接的反转往往会拿来考验人的基本逻辑,因为其中几个变量的初始化和更新稍微考虑疏漏一点儿就出错。 下面的算法提供了一个简洁的实现,不用再考虑那几个变量的初始化及更新了。 //反转单向链表的实现。...
  • Tonny0832
  • Tonny0832
  • 2013年10月14日 09:36
  • 761
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单向链表的反转
举报原因:
原因补充:

(最多只允许输入30个字)