数据结构:栈

本文介绍了数据结构中的栈,阐述了栈的基本概念、性质以及进栈(PUSH)和退栈(POP)的算法。通过车厢调度问题,展示了栈的实际应用,探讨了如何利用栈解决顺序调整的问题,并提及C++中的STL栈库的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构:栈

作为本人新开的类型,我就思考了很久,最后决定写与数据结构有关的博客。说到数据结构,我们首先想到的就是栈。
不 怎 么 华 丽 的 分 割 线

一、简介

栈,是只能在某一端插入和删除的特殊线性表。
栈和我们平时生活中的桶类似,先堆进来的压在底下,随后一件一件地往上堆。取走时,只能从上面一件一件地取走。**(先进先出)**无论是堆还是取,都在顶部进行,底部一般是不动的。
栈是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一端称栈底。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称后进先出表(LIFO表)。

二、栈的实现

一个栈可以用定长为n的数组s来表示,用一个栈顶指针top指向栈顶。若top=0,表示栈空,top=0时栈满。进栈时top加1,退栈时top减1。当top<0时,为下溢(是否避免应看实际情况)。栈指针在运算中永远指向栈顶。

1、进栈(PUSH)算法:

过程一:若top=n时,则给出溢出信息,作出处理(进栈前首先检查栈是否已满,满则会溢出,不满则进行过程二);
过程二:top++(栈指针加1,指向进栈地址);
过程三:s[top]=x,结束(x为新进栈的元素)。

2、退栈(POP)

过程一:若top<=0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈,空则会下溢,不空则作过程二);
过程二:x=s[top](退栈后的元素赋给x);
过程三:top–,结束(栈指针减1,指向栈顶)。
实现过程程序(C++):

#define n 100
void push(int s[],int *top,int *x)    //入栈
{
   
	if(*top==n) printf("overflow"); //判断会不会溢出,会则输出提示“overflow”;
	else
	{
   
		(*top)++;
		s[*top]=*x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值