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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Map集合实例练习一

    Map集合实例练习一    java基础是关键,当你掌握一定的知识量的时候,但感觉其实还是基础是关键,很多框架都是固定的,只要掌握框架的配置,再加基础,相信你也就可以入这行了。选择有很多,要么及早的地放弃,不要浪费青春时光与金钱,要么坚持不放弃,一直干下去….失败不可怕,可怕的是不敢面对失败。好了,加油!!!引导语,就简单的说到这里。      Map概念Map集合的特点,如是否可重复,…

    2022年5月30日
    37
  • 彻底弄懂二叉树的先序,中序,后序三种遍历与做题方式_二叉树的先序,中序,后序遍历例题

    彻底弄懂二叉树的先序,中序,后序三种遍历与做题方式_二叉树的先序,中序,后序遍历例题二叉树二叉树遍历二叉树题目计算机二级先序中序后序根

    2022年9月14日
    2
  • AppSettings和ConnectionStrings的区别

    AppSettings和ConnectionStrings的区别AppSettings是ASP.NET1.1时期用的,在.NETFramework2.0中,新增了ConnectionStrings. 1.  providerName=”System.Data.SqlClient”/>  或是  providerName=”System.Data.SqlClient”/>  在里,在页面还可以这样引用.

    2022年5月21日
    45
  • 姿态传感器mpu6050_六轴陀螺仪原理

    姿态传感器mpu6050_六轴陀螺仪原理目录标题1.前言(闲话)2.陀螺仪及MPU6050模块介绍3.硬件连接4.MPU60505.软件代码————官方自带库6.软件代码————其他代码7.学习补充(代码看不懂的时候可以来看一下)8.效果展示9.参考链接10.完整版代码链接1.前言(闲话)正在准备今年的国赛,打算做一个PID控制题目,于是就选了一个相对比较简单的风力摆,2.陀螺仪及MPU6050模块介绍3.硬件连接4.MPU60505.软件代码————官方自带库6.软件代码————其他代码7.学习补充(代码看不懂的时候可以来看一下

    2025年8月10日
    2
  • filetype all java试卷_java认证考试试题及答案

    filetype all java试卷_java认证考试试题及答案java认证考试试题及答案故答案为C。12.Whatistheresultafterthefollowingcodeexecutes?1shorts=0x00FD;2byteb=(byte)s;3System.out.println(b);Select1correctanswer:A.Compiletimeerrorinline1B.Comp…

    2022年7月8日
    25
  • Docker安装Mysql8和sqlyong连接报错2058的解决方法[随笔记录]

    Docker安装Mysql8和sqlyong连接报错2058的解决方法[随笔记录]

    2021年7月13日
    107

发表回复

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

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