数据结构之链式栈(LinkedStack)源码

本文提供了链式栈LinkedStack的C++实现,包括LinkedStack.h头文件和main.cpp测试文件,详细展示了如何创建、插入、删除元素等操作,并附有测试结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LinkedStack.h源码

#pragma once
#include<iostream>
using namespace std;

template<class T>
struct LinkedNode                //结点结构体定义
{
	T _data;                     //数据域
	LinkedNode<T>* _next;        //指针域,指向下一结点
	LinkedNode<T>* _last;        //指针域,指向上一结点
	LinkedNode(LinkedNode<T>* next = nullptr, 
		LinkedNode<T>* last = nullptr) {   //默认构造函数,参数只有指针域
		_next = next;
		_last = last;
	}
	LinkedNode(T data, LinkedNode<T>*next = nullptr,
		LinkedNode<T>* last = nullptr) {//带有数据域的构造函数
		_data = data;
		_next = next;
		_last = last;
	}
};

//链式栈定义
template<class T>
class LinkedStack {
private:
	LinkedNode<T>* _top;                 //指向栈顶元素
	LinkedNode<T>* _bottom;              //指向栈底元素
	int _size;                           //结点数量
   //初始化函数,可以用于复制构造函数和重载等号运算符
	void init(LinkedStack<T>& stackPar);
public:
	LinkedStack();                       //默认构造函数
	LinkedStack(LinkedStack<T>& stackPar);//复制构造函数
	//重载等号运算符
	LinkedStack<T>& operator = (LinkedStack<T>& stackPar);
	~LinkedStack();                       //析构函数
	void makeEmpty();                     //清空栈函数
	bool isEmpty() { return (_size == 0) ? true : false; };  //判断空否函数
	void push(const T data);              //从栈顶插入函数
	bool pop(T& data);                    //从栈顶弹
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值