C++版 - 剑指offer 面试题5:从尾到头打印链表 题解 编辑

面试题5:从尾到头打印链表


提交网址: http://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tqId=11156 


本题知识点: 链表


题目描述

输入一个链表,从尾到头打印链表每个节点的值。 
输入描述:
输入为链表的表头

输出描述:
输出为需要打印的“新链表”的表头

分析:

此题要求返回类型为vector<int>,故有两种方法:

1. 使用vector容器在头部进行插入,模拟堆栈;

2. 使用递归思想实现。


AC代码:

class Solution {
public:
    vector<int> printListFromTailToHead(struct ListNode* head) {
        
        vector<int> vec;
        ListNode *p;
        
        p=head;
        while(p!=NULL)
        {
            vec.insert(vec.begin(), p->val);  // 每次都在向量的开头进行插入
            p=p->next;
        }
        return vec;
    }
};


如果想使用stack容器的话,可以这样写:

void printListFromTailToHead(ListNode *head)
{
	if(head==NULL) return head;
	std::stack <ListNode*> s;
	ListNode *p;
	while(p!=NULL)
		{
			s.push(p);      // 顶部插入
			p=p->next;
		}
	while(!s.empty())
	{
		p=s.top();                  // 获取到栈顶的结点(指针类型)
		cout<<p->val<<" ";  // printf("%d\t",p->val);
		s.pop();                     // pop():出栈,删除栈顶元素
	}
}





作者:极客玩家
出处:https://geekzl.com

如果,您希望更容易地发现我的新文章,不妨点击一下绿色通道的关注我,亦可微信搜索公众号大白技术控关注我。

如果您觉得阅读本文对您有帮助,请点击一下右下方的推荐按钮,您的推荐将是我写作的最大动力!
版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。如您有任何疑问或者授权方面的协商,请          .
posted @   大白技术控  阅读(413)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?

打赏

>>

欢迎打赏支持我 ^_^

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示