数据结构——栈

数据结构——栈

  • 栈(stack),它是一种运算受限的线性表,后进先出(LIFO)。栈限定仅在表尾(栈顶)进行插入或者删除。
    ![- !](https://img-blog.csdnimg.cn/20210515175725765.png
  • 栈的定义和初始化
typedef struct{
	SDataNode *base; //栈底指针
	SDataNode *top;  //栈顶指针
	int StackSize;   //当前已经分配的存储空间,以元素为单位 
}SdStack;
//初始化顺序栈,构造一个空栈
Status initstack(SdStack &S){
	//分配存储空间 
	S.base = (SDataNode *)malloc(stack_init_size*sizeof(SDataNode));
	if(!S.base){
		//如果分配失败,则返回error 
		return OVERFLOW;
	}
	//S.top 始终指向栈顶元素的下一个位置 
	S.top = S.base;    //初始状态下为空栈 
	S.StackSize = stack_init_size;   //当前已经分配的存储容量为100个 
	return OK;	
}

  • STL中栈的基本操作
    C++ 中STL 就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。
    1.push(element):添加一个新元素到栈顶位置。
    2.pop():移除栈顶的元素,同时返回被移除的元素。
    3.size():返回栈里的元素个数。
    4.clear():移除栈里的所有元素。
    5.empty():判断栈是否为空,如果栈里没有任何元素就返回true,否则返回false。
    6.top():返回栈顶的元素,不对栈做任何修改(这个方法不会移除栈顶的元素,仅仅返回它)。

  • 基本操作详解

//头文件
#include <stack>
//创建栈类
stack<int> S;
    // 栈相关的方法

1.push()

// 压栈操作
for(int i=0;i<8;i++)
S.push(i);

2.pop() ——使用前要先判断栈是否为空

// 出栈操作
if(!S.empty())
S.pop();

3.size()

// 获取栈中元素的个数
cout<<"栈中元素个数为:"<<S.size();

4.clesr()

//删除全部元素
S.clear();

5.empty()

if(S.empty())
{
	return true;
}
else
{	return false;}

6.top()

//返回栈顶元素
S.top();
  • 题目
    1.在这里插入图片描述
    答案:C

  • A答案: 65进栈, 5出栈, 4进栈出栈, 3进栈出栈, 6出栈, 21进栈,1出栈, 2出栈

  • B答案: 654进栈, 4出栈, 5出栈, 3进栈出栈, 2进栈出栈, 1进栈出栈, 6出栈

  • D答案: 65432进栈, 2出栈, 3出栈, 4出栈, 1进栈出栈, 5出栈, 6出栈

2.表达式括号匹配
表达式括号匹配(洛谷)

3.后缀表达式
后缀表达式(洛谷)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值