首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >栈的实现(数组)

栈的实现(数组)

作者头像
用户7272142
发布2023-10-11 21:08:13
发布2023-10-11 21:08:13
1870
举报
文章被收录于专栏:Republic博客Republic博客

概述

栈就不多做介绍了,之前我们讲的很多东西都涉及到了栈。我这里就说一下,如何通过数组和链表实现一个栈。

数组 大家肯定知道操作栈的几种命令比如 push pop之类的,学过汇编的都知道,push就是有一个栈顶指针,如果这个指针指向了栈的下一个单元,说明栈为空,push就会让这个指针上移,pop则相反。那么我们也可以通过数组这样来做,但是需要明确的是,栈的操作复杂度是O(1)每次只对栈顶元素操作。

代码语言:javascript
复制
#include<stdio.h>
#define MAX_szie 101
int top = -1;
int A[MAX_szie];
void push(int x);
void pop();
void Isempty();
int Top();
void Print();
int main()
{
  push(2);
  push(4);
  push(7);
  push(9);
  pop();
  pop();
  Print();
}
void push(int x)
{
  if (top == MAX_szie-1)
  {
      return;
  }
  A[++top] = x;
}
void pop()
{
  if (top == -1)
  {
      return;
  }
  top--;
}
void Isempty()
{
  if (top == -1)
  {
      printf("yes");
  }
  else
  {
      printf("no");

  }
  return;
}
int Top()
{
  return A[top];
}
void Print()
{
  for (size_t i = 0; i <=top; i++)
  {
      printf("%d ", A[i]);
  }
}

这里面的函数有push、pop、top、Print、Isempty

讲解

push

申明一个变量top = -1;如果我们要push 那么top会+1 并且以此为索引把数放到数组中去。

pop

top-1 数组中的数不用管,再push的话会替换掉

Isempty

判断top是不是等于-1 等于则为空

top

取栈顶的元素,也就是Arry[top]的数组 很好理解

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 讲解
    • push
    • pop
    • Isempty
    • top
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档