ListNode* reverse1(ListNode* pHead)
{
if(pHead == NULL)
return NULL;
ListNode * p1 = NULL;
ListNode * p2 = pHead;
ListNode * p3 = pHead->next;
while(p3!=NULL)
{
p2->next = p1;
p1 = p2;
p2 = p3;
p3 = p3->next;
}
p2->next = p1;
pHead = p2;
return pHead;
}

完整类代码

<pre name="code" class="cpp">struct ListNode
{
int data;
ListNode * next;
}; class ReverseLink
{
public:
ListNode * pHead;
void init()
{
pHead=NULL;
for(int i=0; i<10; i++)
{
insert(i);
}
}
//插入链表最后
void insert(int data)
{
ListNode * p = new ListNode();
p->data = data;
p->next = NULL; if(pHead==NULL)
{
pHead = p;
return;
} ListNode * cur = pHead;
while (cur->next!=NULL)
{
cur = cur->next;
}
cur->next = p;
}
void print()
{
ListNode * p = pHead;
while (p!=NULL)
{
cout<<p->data<<endl;
p = p->next;
}
}
//反转
void reverse()
{
if(pHead->next == NULL)
return;
ListNode * p1 = NULL;
ListNode * p2 = pHead;
ListNode * p3 = pHead->next;
while(p3!=NULL)
{
p2->next = p1;
p1 = p2;
p2 = p3;
p3 = p3->next;
}
p2->next = p1;
pHead = p2;
}
}; int main()
{
ReverseLink rl;
rl.init();
rl.print();
cout<<"reverse"<<endl;
rl.reverse();
rl.print();
return 0;
}

												

链表反转 C++的更多相关文章

  1. 链表反转leetcode206

    最近准备结束自己的科研生涯,准备要开始找工作了,准备在LEETCODE刷刷题...刷的前40题全部用python刷的,各种调包速度奇快,后被师哥告知这样没意义,于是准备开始回归C++,Python用的 ...

  2. 链表反转 (Multi-method)

    链表反转是链表相关问题最基础的知识,做完LeetCode中LinkedList后才会有这种体会,因为ACM算法中不会涉及这一部分.解决这一问题有多种方法,在面试中面试官通常也会要求写出多种.包括sta ...

  3. java实现单链表反转

    一.简介 经查阅,主要有两种方法实现链表反转,递归反转法和遍历反转法: 递归: 在反转当前结点之前先反转其后边的结点,即.从尾结点开始逆向反转各个节点的指针域指向: 遍历:从前往后反转各个结点的指针域 ...

  4. C++ 单向链表反转

    单向链表反转,一道常见的面试题,动手实现下. #include "stdafx.h" #include <stdlib.h> struct Node{ int data ...

  5. c语言:链表排序, 链表反转

    下面将实现链表排序的排序和遍历显示功能: 所定义的链表结构如下: head -> p1 -> p2 ->p3 ->....->pn; head的本身不作为数据节点,hea ...

  6. 【Java数据结构】Java数据结构之链表反转

    我们都知道用C可以很简单的实现单链表反转,今天来学习下,在Java中如何实现链表反转. 思路很简单,定义一个类,这个类分成2块,一块是表示自身的标志,另外一个存储指向下一个元素的引用.通过互换相邻两个 ...

  7. [LeetCode] 链表反转相关题目

    暂时接触到LeetCode上与链表反转相关的题目一共有3道,在这篇博文里面总结一下.首先要讲一下我一开始思考的误区:链表的反转,不是改变节点的位置,而是改变每一个节点next指针的指向. 下面直接看看 ...

  8. 单链表反转(Singly Linked Lists in Java)

    单链表反转(Singly Linked Lists in Java) 博客分类: 数据结构及算法   package dsa.linkedlist; public class Node<E> ...

  9. 【easy】206. Reverse Linked List 链表反转

    链表反转,一发成功~ /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; ...

  10. java实现单链表反转(倒置)

    据说单链表反转问题面试中经常问,而链表这个东西相对于数组的确稍微难想象,因此今天纪录一下单链表反转的代码. 1,先定义一个节点类. 1 public class Node { 2 int index; ...

随机推荐

  1. 工控漏洞利用框架 - ISF(Industrial Security Framework)

    一. 框架介绍 本框架主要使用Python语言开发,通过集成ShadowBroker释放的NSA工具Fuzzbunch攻击框架,开发一款适合工控漏洞利用的框架.由于Fuzzbunch攻击框架仅适用于P ...

  2. deep_learning_Function_list变量前面加星号,字典变量前面加两个星号

    列表前面加星号作用是将列表解开成两个独立的参数,传入函数, 字典前面加两个星号,是将字典解开成独立的元素作为形参. def add(a, b): return a+b data = [4,3] pri ...

  3. Java 实现的 简单WordCount功能

    githup 链接:https://gitee.com/iy2524/WordCount.git PSP表格  psp2.1  psp阶段 估计耗时(分钟)  实际耗时(分钟) Planning  计 ...

  4. x86和x64下指针的大小

    根据测试 int main() { ; )); )); int n1 = sizeof(a); int n2 = sizeof(p); // int n3 = sizeof(*p); error in ...

  5. CentOS 安装oracle client

    下载Oracle Client 1.通过下载地址下载 下载地址:https://www.oracle.com/database/technologies/instant-client/linux-x8 ...

  6. PyQt打包可执行文件

    1.安装pyinstaller pip install pyinstaller 2.pyinstaller打包 pyinstaller -F -w xxxx.py -F:生成可执行文件 -w:不显示命 ...

  7. jenkins汉化

    插件: Localization: Chinese (Simplified) locale plugin(或者是这个版本不一样,名字不一样) 可以直接安装这个插件,然后走最后一步设置即可. 由于安装失 ...

  8. Python之asyncio模块的使用

    asyncio模块作用:构建协程并发应用的工具 python并发的三大内置模块,简单认识: .multiprocessing:多进程并发处理 .threading模块:多线程并发处理 .asyncio ...

  9. kubernetes的搭建以及dashboard页面的启动

    ###查看kubernetes状态 ``` kubectl get pods -A #查看相关状态 kubectl get cs #查看k8s的ready状态 kubectl get node #查看 ...

  10. 【Java Web】IDEA如何创建及配置Web项目(多图)

    正文之前 在学习Java Web时,第一个遇到的问题就是如何创建或配置Web项目了,今天,就用IntelliJ IDEA 来进行Web项目配置: 创建Web项目 配置web项目 正文 创建Web项目 ...