栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

链栈----初始化

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

链栈----初始化

#include 
using namespace std;
template
struct stacknode
{
private:
	T data;
	stacknode* link;
public:
	stacknode(T d = 0, stacknode* next = NULL) :data(d), link(next) {};
};
template
class linkstack   //
{
private:
	stacknode* top;  //栈顶指针
	void ouput(ostream& s, stacknode* ptr, int i);
public:
	linkstack() :top(NULL) {};
	~linkstack() {};
	void Push(T x);
	bool Pop(T& x);
	bool Isempty()const { return top == NULL; }
	bool getTop(T& x)const;

};
template
linkstack::~linkstack()  //top是头结点,链栈不带头结点。
{
	stacknode* p;
	while (top != NULL)
	{
		p = top->link;
		delete top;
		top = top->link;
	}
}
template
void linkstack::Push(T x)
{
	//top = new stacknode(x, top);  //按照构造函数来
	//以下用创建链表的方式创建(头插法)
	stacknode* p=top;
	top = new stacknode;
	top->data = x;
	top->link = p;
}
template
bool linkstack::Pop(T &x)  //删除头结点的操作
{
	if (Isempty() == true)return false;
	stacknode* p = top;
	top = top->link;
	x = p->data;
	delete p;
	return true;
}
template
bool linkstack::getTop(T& x)const  //删除头结点的操作
{
	if (Isempty() == true)return false;
	stacknode* p = top;
	top = top->link;
	x = p->data;
	return true;
}



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/303488.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号