c++ vector 反转打印链表
来源:互联网 发布:百度 mac 五笔 词库 编辑:程序博客网 时间:2024/06/08 13:35
题目描述
输入一个链表,从尾到头打印链表每个节点的值。
要求接口为: vector<int> printListFromTailToHead(ListNode* head);
解析:
遍历链表,但遍历的顺序是从头到尾,可输出是从尾到头,明显是要进行转换
方法一:利用vector的reverse函数
/** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> result; struct ListNode * pNode = head; while(pNode != NULL) { result.push_back(pNode->val); pNode = pNode->next; } reverse(result.begin(), result.end()); return result; }};方法二:先将链表反转,在放入容器输入
不用递归实现
/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> result; struct ListNode *lpre = head; struct ListNode *lcur = lpre->next; struct ListNode *lnext = NULL; while(lcur != NULL) { lnext = lcur->next; lcur->next = lpre; lpre = lcur; lcur = lnext; } head->next = NULL; while(lpre != NULL) { result.push_back(lpre->val); lpre = lpre->next; } return result; }};用递归实现链表反转,这个不好用在完成这个接口上
void printListFromTailToHead(ListNode* pListHead){ if(pListHead!=NULL){ //print the next node first if(pListHead->next!=NULL){ printListFromTailToHead(pListHead->next); } // And then print the current node print("%d",pListHead->val); } }方法三:vector和stack共同完成
后入先出很容易想到栈吧
class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> result; stack<struct ListNode*>Nodes; struct ListNode* pNode = head; while(pNode != NULL) { Nodes.push(pNode); pNode = pNode->next; } while(!Nodes.empty()) { pNode = Nodes.top(); result.push_back(pNode->val); Nodes.pop(); } return result; }};
阅读全文
0 0
- c++ vector 反转打印链表
- 一个链表创建、反转、打印的C语言代码
- C语言 链表反向打印与反转
- 牛客网--链表反转打印
- c链表反转
- 【C++】反转链表
- 【C/C++】反转链表
- [数据结构]链表创建、打印、反转
- 链表的创建 打印 反转
- C语言各种链表操作(创建、打印、删除、插入、反转)
- C 单向链表反转
- [c] 单链表创建,打印和反转
- 【链表】C++链表反转、链表逆序打印
- 从尾到头打印链表 反转链表
- 从尾到头打印链表(链表反转)
- 【链表】C++链表反转、链表逆序打印
- C++链表反转、链表逆序打印
- 剑指offer——链表的递归反转打印
- (转)券商IT研发现状:一年最多花5亿 中小公司靠外包
- Python中 sys.argv[]的用法简明解释
- SDUT-1170 C语言实验——最值
- IntelliJ IDEA报warn class is never used
- 51Nod-1378-夹克老爷的愤怒
- c++ vector 反转打印链表
- AOJ-problem-802
- jstl标签库、函数
- androidstudio之ADB异常
- Android IPC 进程间通信机制之 AIDL
- linux下安装最新版本mysql5.7 问题(yum安装方法)
- NetUse命令在渗透测试中的连接条件测试
- 流畅的python--dict的优点以及缺点
- spark例子整理