栈的存储

本文介绍了栈这一数据结构,包括栈的定义、工作原理,以及通过数组、链表等方式进行存储的实现方法。着重讨论了数组堆栈和串列堆栈(链表堆栈),并提到了顺序存储的顺序栈。栈作为一种后进先出的数据结构,在各种计算问题中广泛应用。

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

什么是栈

堆栈(英语: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值