单向链表的反转

原创 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;

}

}


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

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

反转部分单向链表 Python 版

题目: 给定一个单链表的头指针 head, 以及两个整数 a 和 b,在单链表中反转 linked_list[a-b] 的结点,然后返回整个链表的头指针。 例如: 单链表[1000, 5, 12...

以k个元素为一组反转单向链表

问题: 以k个元素为一组,反转单向链表。比如: 输入: 1->2->3->4->5->6->7->8->null and k = 3 输出:3->2->1->6->5->4->8->7->n...

C 单向链表反转

示意图 代码实现 [cpp] view plaincopy #include       struct ListNod...

反转一个单向链表

反转一个单向链表的小练习。

数据结构(2):单向链表的反转

非递归:用3个指针反转单向链表。递归:最好画一个栈,模拟函数的递归调用过程。...
  • qcyfred
  • qcyfred
  • 2017年01月04日 21:22
  • 166

Java 反转单向链表

Java 链表反转(递归与非递归实现)

java实现单向链表CRUD,反转,排序,查找倒数第k个元素,递归输出等操作

package myLink;import javax.xml.transform.Templates;public class LianBiao { static Node head=nul...
  • CheriYu
  • CheriYu
  • 2017年08月03日 09:41
  • 198

JAVA实现单向链表反转

本片内容代码反转算法为转载!!上一篇《Java实现单向链表反转》中存在一个last是从前往后反转的。本片文章要实现的是从后往前反转。大体思路差不多。就是在临时变量.cur,pre的替换保存花费了些心思...
  • djx0226
  • djx0226
  • 2013年06月04日 03:11
  • 1009

【我要去面试】单向链表反转

又到一年一次的招聘季,很多莘莘学子该忙起来了,复习基础知识,搜索面试题。面试题里面比较经典的是单向链表反转,就是一个单向链表,就地反转。这个面试题主要考查:1. 基础知识(单向链表设计);2. 边界条...

华为机试题(8)--单向链表的建立,反转(逆序),遍历显示,删除

单向链表的建立,反转(逆序),遍历显示,删除#include #include typedef struct node//节点存放一个数据和指向下一个节点的指针 { int data...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单向链表的反转
举报原因:
原因补充:

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