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++实现的更多相关文章

  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. Android组件化开发-----页面路由(ARouter)

    平时开发中,我们经常用到页面跳转功能.之前我一直使用Intent过跳转 Intent intent = new Intent(A.this, B.class); intent.putExtra(&qu ...

  2. Characterizing possible failure modes in physics-informed neural network

    NeurIPS 2021 表征PINN中可能的失败模式.本文的思路也比较简单,通过对PINN的优化域进行观察,发现导致PINN训练的原因并不是因为神经网络的表达力不足,而是由于PINN中引入了基于PD ...

  3. padding&margin

    margin是盒子的外边距,即盒子与盒子之间的距离,而padding是内边距,是盒子的边与盒子内部元素的距离. 鞋盒里面的鞋到 盒子的距离设置为 padding ,而 鞋盒到鞋架的距离设置为margi ...

  4. python虚拟环境和包管理

    新建一个虚拟环境: python3 -m venv env1 # 新建一个名称为env1的虚拟环境 激活环境: source env1/bin/activate 退出虚拟环境: deactivate ...

  5. 通过nft持有大户地址获取正常交易和内部交易

    /*内部交易*/------------ CREATE TABLE `internal_txlist` ( `blockNumber` varchar(255) DEFAULT NULL, `tx_t ...

  6. nginx 解决 405 not allowed错误

    1.http nginx.conf文件 error_page 后 增加代码 error_page 405 =200 @405; location @405 { proxy_method GET; pr ...

  7. 【C学习随笔】day1-4 写一篇博客

    1>写一个自我介绍 大家好 我是一名普普通通的单片机CODER,懒懒散散的度过了四年大学时光,等到工作时才发现自己缺失了很多的技术.打算在一年内恶补大学时的知识,争取早日成为一名合格的码农.2& ...

  8. 【python学习】数据结构第一节

    1.访问元组或列表中的值      (注:元素是从0开始从左往有编号的,或者从右向左编号[-1开始]) 列表 x1 = [1,2,3,4] 元组 x2 =(1,2,3,4) print(x2[0]) ...

  9. leetcode 98. 验证二叉搜索树 【一遍dfs】【时间击败99.72%】【内存击败94.23%】

    复用left[],[时间击败73.33%]-->[时间击败99.72%] [内存击败36.17%]-->[内存击败94.23%] dfs(r)返回值=new long[]{包括r节点的子树 ...

  10. pip download 参数与使用

    --no-clean Don't clean up build directories. 不要清理构建目录. -c, --constraint <file> Constrain versi ...