数据结构之栈

栈(stack)(又称为堆栈)

    定义:栈是限定仅在表尾进行插入和删除操作的线性表
    栈是一种运算受限制的线性表,表现在:仅限在表尾进行插入和删除操作的线性表。一般将允许插入和删除的一端称之为栈顶(top),另一端称之为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进后出(Last In First Out)的线性表,简称LIFO的线性表。


有关于栈:

    首先:“栈”者,存储货物或提供旅客居住的房屋,引申至计算机领域即为:数据暂时存储的地方,所以才有进栈,出栈的说法。

    再者:定义中所说“在表尾进行插入和删除操作”中的“表尾”指的是栈顶,而非栈底。


有关于栈的一些基本操作:

进栈操作(push):

int Push_SqStack(SqStack *s,int x)//入栈
{
	if(s->top==MAXSIZE-1)
	return 0;//栈满不能入栈
	else
	{
		s->top++;//栈顶指针加一
		s->data[s->top]=x;//将新插入的值赋给栈顶
		return 1;
	}
}

出栈操作(pop):

int Pop_SqStack(SqStack*s,int *x)//出栈
{
	if(Empty_SqStack(s))
	return 0;//栈空不能出栈
	else
	{
	*x=s->data[s->top];//将要删除的栈顶元素赋值给x
	s->top--;//栈顶指针减一
	return 1;
	}//栈顶元素存入*x,返回
}

判栈空:

int StackEmpty(SqStack *s)//判栈空
{
	if(s->top==-1)
	return 1;
	else
	return 0;
}
初始化:
SqStack *Init_SqStack()
{
	SqStack *s;
	s=(SqStack*)malloc(sizeof(SqStack));
	if(!s)
	{
		printf("空间不足\n");
		return NULL;
	}
	else
	{
		s->top=-1;
		return s;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值