链表反转,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; ...
随机推荐
- Elasticsearch 实战
需求 假设现在有这么一个需求,系统接了很多的报文,需要提供全文检索,为了简化,报文目前只有类型,流水号,内容这三个字段. 索引设计 建立msg索引,映射规则如下 PUT /msg { "ma ...
- shell—if + case条件语句
if 条件语句 1. 概述 在shell的各种条件结构和流程控制结构中都要进行各种测试,然后根据测试结果执行不同的操作,有时候也会与 if 等条件语句相结合,来完成测试判断,以减少程序运行错误. 2. ...
- Java反射获取方法参数名
正常环境下,获取不到参数的名称,使用java反射时,第一个参数名是arg0,第二个参数是arg1,与我们代码中写的对不上. java反射过程中,需要我们做好判断: if(!parameter.is ...
- kaola
考拉布局 CSS <style> * { margin: 0; padding: 0; } body { background-color: #f5f5f5; } .clearfix:af ...
- css设置背景图(背景图太大导致图片显示不全)
.bg{background:url('/back.png');filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizi ...
- Jmeter固定吞吐量控制器Constant Throughput Timer
控制请求的TPS,可以使用JMETER的固定吞吐量控制器Constant Throughput Timer Target throughput(in samples per minute):目标吞吐量 ...
- Go实现KMP和Sunday算法
KMP 1 func KMP(str, substr string) int { 2 if substr == "" { 3 return 0 4 } 5 strLen := le ...
- 普通java项目打成jar包,引入第三方jar .
ja方法1 . MANIFEST.MF 中添加 Class-Path . 1. 项目src目录下创建 META-INF/MANIFEST.MF 文件.文件内容 Manifest-Version ...
- string转JSONObject顺序不变和 往map放数据按顺序
JSONObject field = JSONObject.parseObject(fieldStr,Feature.OrderedField); Map<String,String> m ...
- python 知识点总结
第一张 1)变量 内存空间的表达式 命名要遵守规则 赋值使用 = 2)类型转换 str()将其他类型转成字符窜 int() 将其他类型转成整数 float()将其他类型转成浮点数 3)数据类型 整数类 ...