什么是栈
堆栈(英语:stack)又称为栈或堆叠,是计算机科学中的一种抽象数据类型,只允许在有序的线性数据集合的一端(称为堆栈顶端,英语:top)进行加入数据(英语:push)和移除数据(英语:pop)的运算。因而按照后进先出(LIFO, Last In First Out)的原理运作。
常与另一种有序的线性数据集合队列相提并论。
堆栈常用一维数组或链表来实现
------摘自维基百科
本次主要来讲讲栈的存储,关于栈的应用可见我的博客栈的应用
栈是一种相当方便的数据结构,实现方式也有很多种,如数组存储,链表存储和手写结构体存储
数组堆栈
请看代码实现(摘自维基百科 - 堆栈#陣列堆疊)
include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define stack struct Stack
#define STACK_POP_ERR 42
// 堆疊資料結構 堆栈数据结构
struct Stack {
int val[10]; // 陣列空間
int top; // 堆疊頂端指標(栈顶)
};
// 檢查堆疊是否為空
bool empty(stack *stk) {
return stk->top == 0;
}
// 推入資料
void push(stack *stk, int x) {
stk->top = stk->top + 1;
stk->val