c语言顺序栈、链栈

本文介绍了如何使用C语言实现顺序栈和链栈,包括初始化、入栈、出栈、取栈顶元素等操作。顺序栈在满员时需要重新分配空间,而链栈在栈顶插入和删除操作更为方便。示例代码展示了具体实现过程。
摘要由CSDN通过智能技术生成

栈(Stack)是只允许在一端进行插入或删除操作的线性表。其特点是他的元素后进先出(Last In First Out (LIFO))。
在实现栈的时候需要设置一个成员用于存放栈顶游标(top)(储存栈顶元素的位置信息),有的把最后一个元素的下标作为栈顶记录。

顺序栈

设顺序栈为S,需要注意的如下:

入栈:
栈满时 S.top-S.base==S.stacksize

出栈:
栈空时 S.top == S.base

取栈顶元素:
++会改变自身值,而-1不会改变,故返回*(S.top-1);

顺序栈特点:
由于顺序栈和顺序表一样, 受到最大空间容量的限制, 虽然可以在 “满员” 时重新分配空间扩大容量, 但工作量较大,因此在应用程序无法预先估计栈可能达到的最大容量时,应该尽量避免使用顺序栈。
 

#include<stdio.h>
#include<stdlib.h>

#define MAXSIZE 100
typedef int SElemType;

//顺序栈的存储结构
typedef struct
{
    SElemType *base;
    SElemType *top;
    int stacksize;            //可用最大容量
}SqStack;

//初始化
void InitStack(SqStack &S)
{ <

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值