单向链表的反转

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

}

}


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

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C 单向链表反转

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

单向链表反转

转自于:http://www.cppblog.com/tx7do/archive/2009/01/06/71280.html 题目:已知单向链表的头结点head,写一个函数把这个链表逆序 ...

反转一个单向链表

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

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

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

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

非递归:用3个指针反转单向链表。递归:最好画一个栈,模拟函数的递归调用过程。

Java 反转单向链表

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

JAVA实现单向链表反转

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

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

package myLink;import javax.xml.transform.Templates;public class LianBiao { static Node head=nul...

反转单向链表

反转单向链表

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

又到一年一次的招聘季,很多莘莘学子该忙起来了,复习基础知识,搜索面试题。面试题里面比较经典的是单向链表反转,就是一个单向链表,就地反转。这个面试题主要考查:1. 基础知识(单向链表设计);2. 边界条...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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