栈,数据结构

本文介绍了如何使用数组实现一个有限大小的字符栈,详细阐述了栈的基本操作,包括入栈、出栈以及栈满和栈空的判断。示例代码展示了C++中如何定义和操作一个具有100个元素的栈,对于栈的操作,如获取栈顶元素和压入新元素进行了演示。
摘要由CSDN通过智能技术生成

字符类型的栈(有大小上限)
从0开始计数

主要实现思想:
1.本质就是数组
2.用下标表示栈顶
3.出入栈就对下标加减就好了

*PS:*若要实现任意长度的栈,使用栈链表(本质就是单链表),头插法创建单链表(这样可以保证出入栈方向与创建方向一致,头指针就是栈顶元素的指针,如果尾插的话,链表尾才是栈顶,不方便),出入栈就对头指针操作:入栈就新插入一个节点,并让头指针指向他。出栈就删除头指针指向的节点,并将头指针指向该节点下一个

#include<bits/stdc++.h>
using namespace std;
class stackk {//加k防止重名
	int top;
	char a[100];
public:
	stackk()
	{
		top = -1;//初始化为空栈
	}
	~stackk()
	{
	}
	char gettop()
	{
		if (is_empty())//判断是否为空

		{
			cout << "error!" << endl;
			exit(0);
		}
		else
		{
			top--;
			return a[top + 1];
		}
	}
	void pushtop(char b)
	{
		if (is_full())
		{
			cout << "error!" << endl;
		}
		else
		{
			top++;
			a[top] = b;
		}

	}
	bool is_empty()
	{
		return top == -1;
	}
	bool is_full()
	{
		return top == 99;
	}
};
int main()
{
	stackk a;
	char n;
	cin >> n;
	a.pushtop(n);
	cout << a.gettop();

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值