栈、队列、数组

1|0

1|1定义

#include <stdio.h> /* 只允许在栈顶插入删除操作的线性表 Last Insert First Out. */ // 顺序栈 #define MaxSize 10 typedef struct { int data[MaxSize]; // 静态数组存放栈元素 int top; // 栈顶指针 } SqStack;

1|2栈顶指针指向栈顶元素的栈 空为-1

// 栈顶指针指向栈顶元素 空为-1 void InitStack1(SqStack &S) { S.top = -1; // 栈空 } void Push1(SqStack &S, int x) { S.data[++S.top] = x; } int Pop1(SqStack &S) { int x; x = S.data[S.top--]; return x; } int GetTop1(SqStack S) { return S.data[S.top]; }

1|0测试

int main() { SqStack S; InitStack1(S); for(int i=1; i<=5; i++) { Push1(S, i); } puts("after push..."); show1(S); puts("pop...."); while( S.top != -1) { int x = Pop1(S); printf("%i\n", x); } return 0; } void show1(SqStack S) { for(int i=S.top; i!=-1; i--) { printf("| %i |\n", S.data[i]); puts("-----\n"); } }

image

1|3栈顶指针指向下一个元素存放位置的栈 空为 0

// 栈顶指针指向下一个元素存放位置 空为 0 void InitStack0(SqStack &S) { S.top = 0; // 栈空 } void Push0(SqStack &S, int x) { S.data[S.top++] = x; } void Pop0(SqStack &S) { int x; x = S.data[--S.top]; } int GetTop0(SqStack S) { int x; x = S.data[S.top - 1]; return x; }

1|4共享栈

// 共享栈 typedef struct { int data[MaxSize]; int topa; // 栈a 以下方为栈底 的栈顶指针 int topb; // 栈b 以上方位栈底 的栈顶指针 }ShStack; void InitShStack(ShStack &S) { S.topa = -1; S.topb = MaxSize; } bool isFull(ShStack S) // 栈是否已满 { return S.topa + 1 == S.topb; } bool Pusha(ShStack &S, int x) { if(isFull(S) == true) { return false; } S.data[++S.topa] = x; return true; } bool Pushb(ShStack &S, int x) { if(isFull(S) == true) { return false; } S.data[++S.topb] = x; return true; } int Popa(ShStack &S) { return S.data[S.topa--]; } int Popb(ShStack &S) { return S.data[S.topb--]; }

2|0队列

3|0数组


__EOF__

本文作者HUGBOY
本文链接https://www.cnblogs.com/hugboy/p/16329818.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   HUGBOY  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示