王道计算机考研数据结构—学习笔记Chapter Three 栈Stack

3.1栈的定义(逻辑结构)

栈(stack)是只允许在一端进行插入或删除操作的线性表。空栈是没有元素的栈。栈底是不允许插入或删除的一端,称为栈底元素。栈顶是允许插入或删除的一端,称为栈顶元素。
栈的特点是后进先出(LIFO)

3.2栈的基本操作

lnitStack(&S):初始化栈。构造一个空栈s,分配内存空间。

DestroyStack(&L):销毁栈。销毁并释放栈s所占用的内存空间。

Push(&S,x):进栈。若栈S未满,则将x加入使之成为新栈顶。

Pop(&s,&x):出栈。若栈S非空,则弹出栈顶元素,并用x返回。

GetTop(S,&x):读栈顶元素。若栈s非空,则用x返回栈顶元素。此为常用操作。

StackEmpty(S):判空操作。判断一个栈s是否为空。若s为空,则返回true,否则返回false。

n个不同元素进栈,出栈元素不同排列的个数为卡特兰数(1/n+1)C上n下2n

3.3栈的存储结构Stack(物理结构)

3.3.1栈的顺序存储SqStack

//伪代码 
//顺序栈的定义 
#define MaxSize 10//定义栈中元素的最大个数
typedef struct{
   
	ElemType data[MaxSize];//静态数组存放栈中元素
	int top;//栈顶指针
	//int top01;//共享栈,两个栈共享一片空间 //判断共享栈满的条件是top+1=top01; 
} SqStack;//顺序栈的存储空间大小为MaxSize*sizeof(栈顶类型) 


//初始化栈
void InitStack(SqStack&S){
   
	S.top=-1;//初始化栈顶指针 
	S.top=MaxSize; 
} 

//判断栈空
bool StackEmpty(sqstack S){
   
	if(S.top==-1)//栈空
		return true;
	else
		return false
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值