链表反转,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; ...
随机推荐
- CAN通讯模板
#define MyCAN_SJW CAN_SJW_3tq#define MyCAN_BS1 CAN_BS1_5tq#define MyCAN_BS2 CAN_BS2_3tq#define MyCAN ...
- Mybatis开发之mapper代理实现自定义接口(常用)
Mybatis开发之mapper代理实现自定义接口(常用) 通过mapper代理实现自定义接口 自定义接口,接口里面定义定义相关的业务方法 编写方法相对应的Mapper.xml. 定义完接口后,Map ...
- 实现ViewPager一次滑动多页(保持居中)
项目中开发日历功能,需求是可以连续滑动多页,有列表的流畅.又要保持当前页居中显示. 参考文献: http://www.open-open.com/lib/view/open1435026935638 ...
- PyTables文件格式、PyTables 文件支持的数据类型
翻译自 https://www.pytables.org/usersguide/file_format.html,http://www.pytables.org/usersguide/datatype ...
- vue 图片转base 64
// 将图片转换为Base64imageUrlToBase64(img) { // 一定要设置为let,不然图片不显示 let image = new Image(); // 解决跨域问题 image ...
- tomcat代理,监控及性能优化
第1章 tomcat简介Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同 ...
- .net基础—委托和事件
委托 委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用. 在实例化委托时,可以将其实例与任何具有兼容签名和返回类型的方法相关联. 可以通过委托实例调用方法.可以将任何可访问类或结构中与 ...
- moment.js相关知识总结
参考连接:https://www.jianshu.com/p/9c10543420de 1,ant-design-vue控件当中的日期控件 <a-date-picker @change=&quo ...
- java自定义的异常类
java自定义的异常类 1.自定义异常类,需要继承 RuntimeException @Datapublic class EmployeeCheckException extends RuntimeE ...
- JS学习-async/await
async/await 它保证函数的返回值为 promise. 用更少的.then()块来封装代码,同时它看起来很像同步代码 注意:可能会因为大量await的promises相继发生而变慢. asyn ...