栈浅析 - 数据结构笔记

一点也不难理解的数据结构之二

Posted by ChungZH on 2018-10-13

这篇文章我们来学习

栈的概念

栈(Stack),它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。人们把此端称为栈顶(top),栈顶的第一个元素被称为栈顶元素,相对地,把另一端称为栈底。向一个栈插入新元素又称为进栈或入栈(push),它是把该元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称为出栈或退栈(pop),它是把栈顶元素删除掉,使其下面的相邻元素成为新的栈顶元素。

通过上面的概念,我们可以知道栈是一种 后进先出(LIFO Last In First Out) 的数据结构。

栈的定义

1
2
3
4
struct stack {
int data[101]; // 用来存储数据
int top; // 栈顶
};

栈的实现

首先我们要了解几个栈的基本操作。

进栈 push

1
data[++top] = 1;

出栈 pop

1
top--;

现在我们举个栗子,输入 10 个数,然后倒序输出并删除它们。

上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
struct stack {
int data[101]; // 用来存储数据
int top; // 栈顶
};
int main()
{
stack s;
s.top = 0;
for (int i = 0; i < 10; i++)
{
cin >> s.data[++s.top];
}

for (int i = 0; i < 10; i++)
{
cout << s.data[s.top--] << " ";
}
return 0;
}

很简单。

输入:

1
1 2 3 4 5 6 7 8 9 10

输出:

1
10 9 8 7 6 5 4 3 2 1

下一篇文章我们讲单链表(haha),请做好准备哦~


如果你想学习数据结构和算法,却苦于没有简单易学的教程,那么我给你推荐下面这个课程:

AI前奏必备-数据结构与算法课 - 老九学堂

(此课程中还有Cocos2dx和前端入门课赠送。)


作者:ChungZH

审稿:未央