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;
}


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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 十款最实用的Android UI设计工具

    十款最实用的Android UI设计工具十款最实用的AndroidUI设计工具

  • 【crossbeam系列】3 crossbeam-deque:work-stealing算法

    【crossbeam系列】3 crossbeam-deque:work-stealing算法work-stealing算法简介crossbeam-deque包提供了一个无锁的双向队列(deque)。那么这个双向队列在并发中又起到了什么重要的作用呢?这就涉及到了在多任务环境下的一…

  • modelsim安装_Modelsim10.5安装教程

    modelsim安装_Modelsim10.5安装教程1.鼠标右击软件压缩包,选择“解压到modelsim-win64-10.5”。2.打开解压后的文件夹,鼠标右击“modelsim-win64-10.5”,选择“以管理员身份运行”。3.点击“下一步”。4.点击“浏览”选择软件的安装路径(建议安装在C盘以外的其他磁盘,且安装路径不要有中文),点击“下一步”。…

  • pycharm断点怎么用_idea如何打断点调试

    pycharm断点怎么用_idea如何打断点调试如何进行断点调试1添加断点2调试断点3调试到下一个断点4关于断点调试的说明4.1stepinto4.2stepover4.3stepout5快捷键6参考本文是基于pycharm2019.12的版本撰写的。1添加断点断点的添加方法:在代码的行标前面左键单击即可,如下图所示注意:被注释了的代码行是添加不了断点的!!!2调试断点两种方法,效果都是一样的:点击那个绿色的甲虫图标,开始断点调试,如下图,或者使用右键,选中debug,开始断点调试,如下

  • C语言实践(2016级第5周):编程思维启蒙

    C语言实践(2016级第5周):编程思维启蒙

  • STM32+MFRC522完成IC卡号读取、密码修改、数据读写

    一、环境介绍MCU:STM32F103ZET6开发软件:Keil5非接触式读写卡模块:MFRC522完整工程源码下载:https://download.csdn.net/download/xiaolong1126626497/18905806二、功能介绍使用MFRC522模块完成对IC卡卡号读取、卡类型区分、IC卡扇区密码修改、扇区数据读写等功能;底层采用SPI模拟时序,可以很方便的移植到其他设备,完成项目开发。现在很多嵌入式方向的毕业设计经常使用到该模块,比如:校园…

发表回复

您的电子邮箱地址不会被公开。

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