链表的反转

  • 基本思想:

用三个指针,其中一个指针p指向头结点,q为p的下一个结点。通过判断q是否为空,实现循环,在每一次循环中,引入新的指针r,将q指针的下一个结点设为p,并更新指针q和r。

  • C++完整代码如下:

#include<iostream>
using namespace std;
struct ListNode
{
    int val;
    ListNode *next;
    ListNode(int x): val(x), next(NULL){}
};
ListNode *help(ListNode *a)
{
    ListNode *p = a;
    ListNode *q;
    ListNode *r;
    q = p->next;
    p->next = NULL;
    while (q){
        r = q->next;
        q->next = p;
        p = q;
        q = r;
    }
    return p;
}
int main()
{
    int n;
    ListNode *a=new ListNode(NULL);
    ListNode *pa = a;
    ListNode *result;
    cin >> n;
    while (n--) {
        int temp;
        cin >> temp;
        pa->next = new ListNode(temp);
        pa = pa->next;
    }
    result = help(a->next);
    while (result) {
        cout << result->val << " ";
        result = result->next;
    }
    system("pause");
    return 0;
}

单链表的反转(C++)相关推荐

  1. java 链表反转_LeetCode206 实现单链表的反转

    LeetCode206 实现单链表的反转 LeetCode 码,码不停题 1.题目介绍 Reverse a singly linked list. Example: Input:1->2-> ...

  2. 程序员面试系列——单链表的反转

    单向链表的反转(或者叫逆置)是经常被问到的考题.建议考前临阵磨枪,强背一波. 代码说明: void reverse_list(node_t *head) 此函数实现带头结点(也叫表头.哑结点)的单链表 ...

  3. 链表之单链表的反转总结

    单链表的反转是常见的面试题目.本文总结了2种方法. 1 定义 单链表node的数据结构定义如下: class ListNode {int val;ListNode next;ListNode(int ...

  4. 单链表实现反转的三种方法

    单链表的操作是面试中经常会遇到的问题,今天总结一下反转的几种方案: 1 ,两两对换 2, 放入数组,倒置数组 3, 递归实现 代码如下: #include<stdio.h> #includ ...

  5. Java实现单链表的反转

    思路1:初始化一个新的头节点reverseHead,然后遍历旧链表,利用头插法向reverseHead进行插入 思路2: 1.反转相当于数据的更换(1和n,2和n-1,3和n-2)n为链表的长度 2. ...

  6. 链表——实现单链表的反转

    实现代码(java): public class ListNode {       int val;       ListNode next = null;       ListNode(int va ...

  7. python单链表就地反转_Python中的就地字典反转

    这不适用,但使用popitem()消耗oldDict from collections import defaultdict def invert(oldDict): invertedDict = d ...

  8. 数据结构1:单链表反转java代码解释

    来源于尚硅谷的老师代码,只因其中有几行代码自己课上没听明白,课后自己整理了一下 首先完整代码如下: //将单链表反转 public static void reversetList(HeroNode ...

  9. python反转单链表

    原始单链表 反转后单链表 思路: 对于每个节点来说,把她的下一个节点,改为他的上一个节点,然后把下一个节点继续变换 建两个临时变量,上一个节点pred,下一个节点next,初始化为None 第1步,开 ...

  10. bat面试题 python 单链表反转排序

    单链表反转python实现 单链表的反转可以使用循环,也可以使用递归的方式 1.循环反转单链表

最新文章

  1. 分布式任务调度系统V1
  2. Opengl-立方体贴图(天空盒子)
  3. These dependencies were not found: *!!vue-style-loader!css-loader?
  4. 【企业管理】组织与管理的思考
  5. 【实施工程师之家】——mysql四种索引PRIMARY(主键索引)、INDEX(一般索引)、UNIQUE(非空索引)、FULLTEXT(全文索引)应用
  6. 为了在 Windows 上安装 GCC
  7. 关于Oracle RAC节点间免密码策略
  8. TensorFlow:Windows下使用TensorFlow-Python版本
  9. Redis学习笔记--Redis数据过期策略详解==转
  10. 数数题(计数类 DP)做题记录
  11. 【51Nod - 1416】两点 (dfs 或 并查集+dfs)
  12. CCF202006-1 线性分类器
  13. android中间隔执行程序,Android:在SeekBar中设置间隔
  14. zabbix使用IT services 了解服务器SLA整体情况
  15. python 学习爬虫教程~
  16. 【算法工程师】华为技术面面试记录
  17. jQuery京东分类导航菜单
  18. IDEA汉化,中文包和汉化包以及中文版jar下载(更新了2018-2018.2.3版本)
  19. —— GPS测量原理及应用复习-3 ——
  20. 【项目管理/PMP/PMBOK第六版/新考纲】纯干货!Sprint冲刺/冲刺计划会/每日站立会/冲刺评审会/冲刺回顾会,系列文章建议收藏

热门文章

  1. WPF-使用代码创建Grid行与列,并将控件添加到Grid中的指定行指定列
  2. GitHub上常用命令(工作中几乎每天用到的命令)
  3. MyBatis基础:MyBatis入门(1)
  4. JSTL 核心标签库 使用(C标签)
  5. oracle中exists和in的比较
  6. 关于Jquery ajax调用一般处理程序Handler报500 错误(Internal Server Error)解决办法
  7. 如何知道一个exe或者dll是用什么语言编译的
  8. server2008实验之七 利用FSRM实现文件服务器精确管理.
  9. 关于spfile的一个难题
  10. 纯php代码进行删除数据操作