笔记:数据结构(基于top = -1的顺序栈的完整代码展示)

发布时间:2026/9/15 1:10:14
笔记:数据结构(基于top = -1的顺序栈的完整代码展示) 以下是基于top -1的顺序栈的完整代码展示包含初始化、入栈、出栈、获取栈顶元素、判断栈空、判断栈满、计算栈长度、清空栈和销毁栈等操作完整代码C #include stdio.h #include stdlib.h #include stdbool.h #define MAX_SIZE 100 // 定义栈的最大容量 // 定义顺序栈结构体 typedef struct { int data[MAX_SIZE]; // 存储栈元素的数组 int top; // 栈顶指针初始化为-1 } SeqStack; // 初始化顺序栈 void InitStack(SeqStack *S) { S-top -1; // 栈顶指针初始化为-1表示栈为空 } // 判断栈是否为空 bool IsEmpty(SeqStack S) { return S.top -1; } // 判断栈是否为满 bool IsFull(SeqStack S) { return S.top MAX_SIZE - 1; } // 计算栈的长度 int StackLength(SeqStack S) { return S.top 1; } // 入栈操作 bool Push(SeqStack *S, int element) { if (IsFull(*S)) { printf(Stack is full.\n); return false; } S-top; // 栈顶指针加1 S-data[S-top] element; // 将元素放入栈顶 return true; } // 出栈操作 bool Pop(SeqStack *S, int *element) { if (IsEmpty(*S)) { printf(Stack is empty.\n); return false; } *element S-data[S-top]; // 取出栈顶元素 S-top--; // 栈顶指针减1 return true; } // 获取栈顶元素 bool GetTop(SeqStack S, int *element) { if (IsEmpty(S)) { printf(Stack is empty.\n); return false; } *element S.data[S.top]; // 返回栈顶元素 return true; } // 清空栈 void ClearStack(SeqStack *S) { S-top -1; // 栈顶指针置为-1表示栈为空 } // 销毁栈 void DestroyStack(SeqStack *S) { ClearStack(S); // 清空栈 printf(Stack destroyed.\n); } // 打印栈中元素 void PrintStack(SeqStack S) { if (IsEmpty(S)) { printf(Stack is empty.\n); return; } printf(Stack: ); for (int i 0; i S.top; i) { printf(%d , S.data[i]); } printf(\n); } int main() { SeqStack S; InitStack(S); // 初始化顺序栈 Push(S, 10); // 入栈10 Push(S, 20); // 入栈20 Push(S, 30); // 入栈30 PrintStack(S); // 输出: Stack: 10 20 30 int topElement; GetTop(S, topElement); // 获取栈顶元素 printf(Top element: %d\n, topElement); // 输出: Top element: 30 int poppedElement; Pop(S, poppedElement); // 出栈 printf(Popped element: %d\n, poppedElement); // 输出: Popped element: 30 PrintStack(S); // 输出: Stack: 10 20 printf(Stack length: %d\n, StackLength(S)); // 输出: Stack length: 2 ClearStack(S); // 清空栈 PrintStack(S); // 输出: Stack is empty. DestroyStack(S); // 销毁栈 return 0; }代码解析初始化顺序栈将top初始化为-1表示栈为空。判断栈是否为空如果top -1则栈为空。判断栈是否为满如果top MAX_SIZE - 1则栈已满。计算栈的长度栈的长度为top 1。入栈操作如果栈未满则将元素放入栈顶并将top加1。出栈操作如果栈不为空则取出栈顶元素并将top减1。获取栈顶元素如果栈不为空则返回栈顶元素。清空栈将top置为-1表示栈为空。销毁栈调用ClearStack清空栈并提示栈已销毁。打印栈中元素从栈底到栈顶遍历并打印所有元素。输出结果Stack: 10 20 30 Top element: 30 Popped element: 30 Stack: 10 20 Stack length: 2 Stack is empty. Stack destroyed.总结基于top -1的顺序栈实现简单且直观适用于栈底位置固定的场景。通过掌握这些基本操作可以更好地理解栈的逻辑结构和应用场景。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询