数据结构与算法之堆栈
文章目录
目前正自学数据结构,于此记录学习历程,方便复习。同时为后来者提供帮助。
一、堆栈是什么
堆栈是线性表存储结构的一种,是人们自主的在链表或数组的基础上增加一些限制而形成的。我们可以将它类比为盘子,盘子在堆叠时是一个一个往上面摞。堆栈亦是如此,当你想要在堆栈中存储元素(俗称“入栈”),你只能将其放在前一个元素的后面。 而取盘子也只能从最上面一个一个向下取。同理,在堆栈中如果你想删除一个元素(俗称“出栈”),只能从最后面的元素一个一个向前取。 如下图所示:
入栈:B比A后入,则必须插在A之后
出栈,B在A之后,B先出。
因此,堆栈的出入栈操作也叫做后进后出
二、堆栈的操作
1、Stack CreateStack( int MaxSize ): 生成空堆栈,其最大长度为MaxSize;
代码如下:
struct SNode {
ElementType Data;
PtrToSNode Next;
};
typedef PtrToSNode Stack;
Stack CreateStack( )
{
/* 构建一个堆栈的头结点,返回该结点指针 */
Stack S;
S =