C++操作单链表ListNode「建议收藏」

C++操作单链表ListNode通过C++进行单链表的创建、打印以及利用栈实现逆序打印。单链表的创建和打印#include<iostream>usingnamespacestd;//定义结构体structListNode{ intval; ListNode*next;};classoperateList{public: /*创建单链表*/ …

大家好,又见面了,我是你们的朋友全栈君。

C++操作单链表ListNode

通过C++进行单链表的创建、打印以及利用栈实现逆序打印。

单链表的创建和打印

#include <iostream>
using namespace std;

//定义结构体
struct ListNode{
	int val;
	ListNode* next;
};

class Solution
{
public:
	/*创建单链表*/
	void createList(ListNode *head)
	{
		int i;
		ListNode* phead=head; //不破坏头指针
		for(i=1;i<10;i++){
			ListNode* node=new ListNode;
			node->val=i;
			node->next=NULL;
			phead->next=node;
			phead=node;
		}
		cout<<"链表创建成功!\n";
	}
	
	/*打印链表*/
	void printList(ListNode* head)
	{
		ListNode* phead=head;
		while(phead!=NULL)
		{
			cout<<phead->val<<" ";
			phead=phead->next;
		}
		cout<<"\n";
	}		
};

int main()
{
	ListNode* head=new ListNode;
	Solution ll;
	head->val=0;
	head->next=NULL;
	ll.createList(head);
	ll.printList(head);
	return 0;
}

逆序打印单链表的方式

#include <iostream>
#include <vector>
#include <stack>
using namespace std;

//定义结构体
struct ListNode{
	int val;
	ListNode* next;
};

class Solution
{
public:
	/*创建单链表*/
	void createList(ListNode *head)
	{
		int i;
		ListNode* phead=head; //不破坏头指针
		for(i=1;i<10;i++){
			ListNode* node=new ListNode;
			node->val=i;
			node->next=NULL;
			phead->next=node;
			phead=node;
		}
		cout<<"链表创建成功!\n";
	}
	
	/*打印链表*/
	void printList(ListNode* head)
	{
		ListNode* phead=head;
		while(phead!=NULL)
		{
			cout<<phead->val<<" ";
			phead=phead->next;
		}
		cout<<"\n";
	}		
	
	/*利用栈先进后出的思想*/
	vector<int> printListInverseByStack(ListNode* head){
		vector<int> result;
		stack<int> arr;
		ListNode* phead=head;
		while(phead!=NULL)
		{
			arr.push(phead->val);
			phead=phead->next;
		}
		while(!arr.empty())
		{
			result.push_back(arr.top());
			arr.pop();
		}
		return result;
	}
	
	void printVector(vector<int> result)
	{
		int i;
		for(i=0;i<result.size();i++)
			cout<<result[i]<<" ";
		cout<<"\n";
	}
};

int main()
{
	ListNode* head=new ListNode;
	vector<int> result;
	Solution ll;
	head->val=0;
	head->next=NULL;
	ll.createList(head);
	ll.printList(head);
	//利用栈逆序
	result=ll.printListInverseByStack(head); 
	cout<<"利用栈逆序的结果为:\n";
	ll.printVector(result);
	return 0;
}


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126284.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • golang下文件锁的使用[通俗易懂]

    golang下文件锁的使用[通俗易懂]前言题目是golang下文件锁的使用,但本文的目的其实是通过golang下的文件锁的使用方法,来一窥文件锁背后的机制。为什么需要文件锁只有多线程/多进程这种并发场景下读写文件,才需要加锁,场景1-读写并发读写并发场景下,如果不加锁,就会出现读到脏数据的情况。想象一下,读文件的进程,读到第500字节,有其它进程以覆盖写的方式向文件中写入1000字节,那读进程读到的后500字节就是脏数据。场景2-写写并发写写并发场景下,如果不加锁,假设A进程先写0-1000字节,B进程写0-900字节,以此类

    2022年6月28日
  • JOURNAL OF MOLECULAR LIQUIDS_bert 知识蒸馏

    JOURNAL OF MOLECULAR LIQUIDS_bert 知识蒸馏这片论文是Hinton在15年提出的,为了提升模型的有效性,模型的复杂度的不断增加,上线实时提供服务成了难题,而知识蒸馏的思路正好可以解决这个问题,同时模型的效果相比复杂模型也不会下降太多。论文中以生物中蝴蝶变态发育作类比介绍知识蒸馏:通过不同的形态,完成同样的使命(任务)。Hinton提出可以通过一个简单模型直接学习复杂模型的概率分布结果,如果one-hot的目标是一种hard-targets,那么这种就是一种soft-targets。一种方法是直接比较logits来避免这个问题。具体地,对于每一.

    2022年8月11日
  • Ubuntu 16.04 更新源失败问题

    Ubuntu 16.04 更新源失败问题转载请注明出处转载请注明出处转载请注明出处在输入sudoapt-getupdate出现暂时不能解析域名“us.archive.ubuntu.com”折腾了一周,终于解决了解决办法:有用的点个赞先要吧源备份一个哦:sudocp/etc/apt/sources.list.d/ubuntukylin.list/etc/apt/sources.list.d/ubuntukylin.list

    2022年7月22日
  • 物业 小程序_智慧物业平台app安卓版

    物业 小程序_智慧物业平台app安卓版智慧小区小程序功能小区资讯展示小区最新的资讯和动态.让小区居民对小区的活动有全盘的了解.小区资讯详情.将对活动的具体情况.有一个更详尽的描述。物业通知由物业服务公司通过管理后台发布.能将最新的物业通知推送到用户手机桌面.实现物业管理信息的即时推送.点击即可查看详情。邮包提醒将以数字的方式,提醒住户有多少邮包在传达室尚未领取,领取完成后,该数字将自动归零。小区服务整合小区所有服务项目,如物业维修、超…

    2022年10月10日
  • Java大数据学习01–大数据的本质及学习顺序介绍

    Java大数据学习01–大数据的本质及学习顺序介绍随着互联网的使用人数越来越多,产生的数据也越来越多。根据数据我们可以分析出很多有用的信息。这也就是当前为什么大数据这么火的行为。学习大数据有很多种方式,但我们学习的载体是以目前最普遍,最流行的Java语言来进行学习。下面我们进入正题:1、首先是大数据的本质:大数据的本质无非两条:大数据的存储(Hadoop)和大数据的计算(Spark)存储:由于数据量巨大,把所有数据存在一个机器…

    2022年5月28日
  • Linux 定时执行shell 脚本「建议收藏」

    Linux 定时执行shell 脚本「建议收藏」2019年第85篇文章,总第109篇文章本文大约2000字,阅读大约需要6分钟crontab可以在指定的时间执行一个shell脚本以及执行一系列Linux命令。定时执行sh…

    2022年9月3日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号