栈的顺序表示与实现(C++版)

栈的定义:栈,也称为堆栈,它是一种特殊的线性表,只允许在表的一端进行插入和删除操作。允许进行插入和删除的一端称为栈顶,另一端为栈底。栈顶是动态变化的,它由一个称为栈顶指针(top)的变量指示。当表中没有元素时,称为空栈。

栈的顺序存储结构:

#define StackSize 100
typedef struct
{
	DataType stack[StackSize];
	int top;
}SeqStack;

顺序栈的基本运算:

(1)栈的初始化操作。

void InitStack(SeqStack *S)
/*将栈初始化为空栈只需要把栈顶指针top置为0*/
{
	S->top=0;
}

(2)判断栈是否为空。

int StackEmpty(SeqStack S)
{
	if (S.top==0)
	{
		return 1;
	}
	return 0;
}

(3)取栈顶元素操作。

int GetTop(SeqStack S,DataType *e)
{
	if (S.top<=0)
	{
		printf("栈已经空");
		return 0;
	} 
	else
	{
		*e=S.stack[S.top-1];
		return 1;
	}
}

(4)进栈操作。

int PushStack(SeqStack *S,DataType e)
{
	if (S.top>=StackSize)
	{
		printf("栈已经满");
		return 0;
	} 
	else
	{
		S->stack[S->top]=e;
		S->top++;
		return 1;
	}
}

(5)进栈操作。

int PopStack(SeqStack *S,DataType *e)
{
	if (S.top==0)
	{
		printf("栈已经空");
		return 0;
	} 
	else
	{
		S->top--;
		*e=S.stack[S.top];
		return 1;
	}
}

(6)返回栈的长度。

int StackLength(SeqStack S)
{
	return S.top;
}

(7)清空栈的操作。

void ClearStack(SeqStack *S)
{
	S->top=0;
}



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值