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

链栈之C++实现出栈入栈

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

链栈之C++实现出栈入栈

#include
using namespace std;

typedef int T;

class Node
{
public:
	T data;
	Node* next;
};

class Stack
{
public:
	Stack();
	~Stack();
	void Pushstack();
	void Popstack();
	void Showstack();

private:
	Node* s;
};

Stack::Stack()     //创建链栈
{
	s = new Node;
	if (s == NULL) {
		cout << "内存分配失败!" << endl;
	}
	else {
		s->next = NULL;
	}
}

Stack::~Stack()  
{
	while (s->next) {
		Node* ptemp = s;
		s = s->next;
		delete ptemp; //如果不用工作指针temp,则无法销毁断掉的结点
		ptemp = NULL;
	}
	delete s;
	s = NULL;
}

void Stack::Pushstack()   //入栈
{
	Node* pnew = new Node;
	T e = 0;  
	cout << "请输入压入数据:" << endl;
	cin >> e;
	pnew->next = s;
	pnew->data = e;
	s = pnew;
}

void Stack::Popstack()  //出栈
{
	if (s->next!=NULL) {
		cout << "出栈数值为:" << s->data << endl;
		Node* ptemp = s;
		s = s->next;
		delete ptemp;
		ptemp = NULL;
	}
	else {
		cout << "空链栈" << endl;
	}
}

void Stack::Showstack()  //遍历栈
{
	Node* ptemp = s;
	cout << "链栈中的元素为:" << "  ";
	while (ptemp->next) {
		cout << ptemp->data << " ";
		ptemp = ptemp->next;
	}
	ptemp = NULL;
}

int main()
{
	Stack S;
	S.Pushstack();
	S.Pushstack();
	S.Pushstack();

	S.Showstack();

	S.Popstack();
	S.Showstack();

	system("pause");
	return 0;
}

实现效果如下:

 

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

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

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