剑指offer--反转链表
来源:互联网 发布:腾讯 数据分析师 编辑:程序博客网 时间:2024/06/03 08:29
题目描述:输入一个链表,反转链表后,输出链表的所有元素。
思路1:
1、用三个链表指针分别指向当前节点、当前节点的前一个节点,当前节点的下一个节点;
2、将节点的next指向反转,也就是让当前节点的next指向当前节点的前一个节点,最后将该链表的最后一个节点赋给一个新的节点,同时将该新节点返回;
时间复杂度:O(N)
代码实现:
#include<stack> //链表反转#include<vector>struct ListNode{int val;ListNode* next;ListNode(int _val):val(_val), next(NULL){}};ListNode* ReverseList(ListNode* pHead) {if (pHead == NULL)return NULL;ListNode* ptr = NULL;ListNode* _next = NULL;ListNode* node = pHead;ListNode* head = NULL;while (node != NULL){_next = node->next;if (_next == NULL)head = node;node->next = ptr;ptr = node;node = _next;}return head;}
1、创建一个栈;
2、将链表中节点数据遍历压入栈中,利用栈先进后出(FILO)再将栈中数据存入一个新链表中;
时间复杂度:O(N)
代码实现:
#include<stack> //链表反转#include<vector>struct ListNode{int val;ListNode* next;ListNode(int _val):val(_val), next(NULL){}};ListNode* ReverseList(ListNode* pHead) {if (pHead == NULL)return NULL;ListNode* head = pHead;stack<int> s;while (head != NULL){s.push(head->val);head = head->next;}head = pHead;while (!s.empty()){head->val = s.top();head = head->next;s.pop();}return pHead;}
阅读全文
1 0
- 剑指offer:反转链表
- 剑指offer--反转链表
- 剑指offer--反转链表
- 剑指Offer-反转链表
- 《剑指offer》反转链表
- 剑指 offer:反转链表
- 剑指offer-反转链表
- 剑指offer 反转链表
- 剑指offer-反转链表
- 剑指offer:反转链表
- [剑指offer]反转链表
- 《剑指offer》-反转链表
- 剑指Offer:反转链表
- 剑指offer----反转链表
- 剑指offer|反转链表
- 《剑指offer》反转链表
- 【剑指offer】反转链表
- 剑指offer-反转链表
- 欧拉图浅析及模板
- 好久没有玩博客了,正式宣布我又来了
- 实验 5.3.2 scandir 1. 用 scandir()读取目录内容。只显示以字母开头的文件
- intellij idea svn 切换分支
- synchronized关键字详解
- 剑指offer--反转链表
- numpy shape函数的使用
- java中instanceof运算符的意义和用法
- eclips导入java web项目时import javax.servlet.annotation.WebServlet;报错
- python模块介绍- SocketServer 网络服务框架
- Windows 7 下安装mysql-5.7.18-winx64解压版
- 【数据库SQL实战】获取所有部门当前manager的当前薪水情况
- Selenium学习笔记(一)——简介
- ResNet_残差网络