链表反转,C++实现
1 // To Compile and Run: g++ invert_list.cc -std=c++11 -Wall -O3 && ./a.out
2
3
4 #include <iostream>
5 #include <vector>
6
7
8 class ListNode {
9 public:
10 int data;
11 ListNode *pNext;
12
13 ListNode()
14 : data(0)
15 , pNext(nullptr) {}
16 ListNode(int i)
17 : data(i)
18 , pNext(nullptr) {}
19 };
20
21
22 ListNode *InvertList(ListNode *_pList) {
23 ListNode *_pPrevious = nullptr;
24 while (_pList != nullptr) {
25 ListNode *tmpPtrNext = _pList->pNext;
26
27 _pList->pNext = _pPrevious;
28
29 _pPrevious = _pList;
30 _pList = tmpPtrNext;
31 }
32
33 return _pPrevious;
34 }
35
36 int main(int argc, char const *argv[]) {
37 const std::vector<int> arr {
38 1, 2, 3
39 };
40 ListNode * const ROOT_PTR = new ListNode();
41 ListNode *pList = ROOT_PTR;
42 for (int i: arr) {
43 pList->pNext = new ListNode(i);
44 pList = pList->pNext;
45 }
46 for (ListNode *p = ROOT_PTR->pNext; p != nullptr; p = p->pNext) {
47 std::cout << p->data << "\t";
48 }
49 std::cout << "\n";
50
51 pList = ROOT_PTR->pNext;
52 ListNode *pNewRoot = InvertList(pList);
53 for (ListNode *p = pNewRoot; p != nullptr; p = p->pNext) {
54 std::cout << p->data << "\t";
55 }
56 std::cout << "\n";
57
58 return 0;
59 }
链表反转,C++实现的更多相关文章
- 链表反转leetcode206
最近准备结束自己的科研生涯,准备要开始找工作了,准备在LEETCODE刷刷题...刷的前40题全部用python刷的,各种调包速度奇快,后被师哥告知这样没意义,于是准备开始回归C++,Python用的 ...
- 链表反转 (Multi-method)
链表反转是链表相关问题最基础的知识,做完LeetCode中LinkedList后才会有这种体会,因为ACM算法中不会涉及这一部分.解决这一问题有多种方法,在面试中面试官通常也会要求写出多种.包括sta ...
- java实现单链表反转
一.简介 经查阅,主要有两种方法实现链表反转,递归反转法和遍历反转法: 递归: 在反转当前结点之前先反转其后边的结点,即.从尾结点开始逆向反转各个节点的指针域指向: 遍历:从前往后反转各个结点的指针域 ...
- C++ 单向链表反转
单向链表反转,一道常见的面试题,动手实现下. #include "stdafx.h" #include <stdlib.h> struct Node{ int data ...
- c语言:链表排序, 链表反转
下面将实现链表排序的排序和遍历显示功能: 所定义的链表结构如下: head -> p1 -> p2 ->p3 ->....->pn; head的本身不作为数据节点,hea ...
- 【Java数据结构】Java数据结构之链表反转
我们都知道用C可以很简单的实现单链表反转,今天来学习下,在Java中如何实现链表反转. 思路很简单,定义一个类,这个类分成2块,一块是表示自身的标志,另外一个存储指向下一个元素的引用.通过互换相邻两个 ...
- [LeetCode] 链表反转相关题目
暂时接触到LeetCode上与链表反转相关的题目一共有3道,在这篇博文里面总结一下.首先要讲一下我一开始思考的误区:链表的反转,不是改变节点的位置,而是改变每一个节点next指针的指向. 下面直接看看 ...
- 单链表反转(Singly Linked Lists in Java)
单链表反转(Singly Linked Lists in Java) 博客分类: 数据结构及算法 package dsa.linkedlist; public class Node<E> ...
- 【easy】206. Reverse Linked List 链表反转
链表反转,一发成功~ /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; ...
- java实现单链表反转(倒置)
据说单链表反转问题面试中经常问,而链表这个东西相对于数组的确稍微难想象,因此今天纪录一下单链表反转的代码. 1,先定义一个节点类. 1 public class Node { 2 int index; ...
随机推荐
- next_permutation / prev_permutation 用法
给定输入的序列 a(整数即可,其他无限制条件),next_permutation(a + 1, a + n + 1) 可以求出 a 的关于值的下一个排列,prev_permutation(a + 1, ...
- centos7的密码安全策略加固
centos7操作系统 在CentOS 7上实现密码复杂度策略设置 一.使用login.defs文件 解析:/etc/login.defs 是设置新建用户帐号限制的文件.该文件里的配置对root用户无 ...
- 强烈推荐的elasticsearch集群连接工具: elasticvue
个人感觉非常棒的es-cluster连接工具, 检查状态什么的, 一目了然, 支持中文超方便, 比elasticSearchHead好用多了. 安装方法打开微软浏览器edge-商城搜索-Elastic ...
- element-ui中el-table设置多选checkbox时,selection-change重复执行,以及选不中问题
项目中使用了elementUI中el-table的选择框.在另外一个地方展示选中的行的数量.设置显示数量之后,选择框就无法选中,change事件执行两次. 解决办法:给el-table设置row-ke ...
- 简述47种Shader Map的渲染原理与制作方法
https://mp.weixin.qq.com/s/6EVpmgC53HqklIVkIpEssg
- vue cli 项目初始化配置
- Vue 更改数组中的值,页面不刷新问题。解决方法+原理说明
一.Vue 更改数组中的值,页面不刷新问题 data{ hobby:["打游戏","想静静","发呆"] } 1.错误写法(页面不刷新): ...
- 移动端性能测试--CPU资源
一.背景 在很多场景下我们去使用 App,可能会碰到手机会出现发热发烫的现象.这是因为 CPU 使用率过高.CPU 过于繁忙,会使得整个系统无法响应用户,整体性能降低,用户体验变得相当差,也容易引起 ...
- 原因代码: 0x2000c 关机类型: 关机
进程 C:\Windows\system32\silsvc.exe (XTKFSERVER2019) 由于以下原因已代表用户 NT AUTHORITY\SYSTEM 启动计算机 XTKFSERVER2 ...
- vue 移动端px转rem
1.安装lib-flexible 终端执行命令:npm i lib-flexible --save 2.在main.js引入lib-flexible 3.终端执行命令:npm install post ...