数据结构中顺序栈的进栈和出栈用C语言表示

简介: 数据结构中顺序栈的进栈和出栈用C语言表示

初始化一个栈,只需要将栈顶指针置为-1

这里我们讨论顺序栈

#include<stdio.h>
#define maxsize 100
typedef struct
{
  int data[maxsize];
  int top;
}sqstack;
void initStack(sqstack &st)
{
  st.top=-1;
}

判断栈空返回1,否则返回0

int isEmpty(sqstack st)
{
  if(st.top==-1)
    return 1;
  else
    return 0;
  
}

进栈的时候注意:栈满就不能进栈

int push(sqstack &st,int x)
{
  if(st.top==maxsize-1)
    return 0;
  ++(st.top);//先移动指针,在进栈
  st.data[st.top]=x;
  return 1;
}

出栈的时候注意:栈空就不能出栈

int pop(sqstack &st,int &x)
{
  if(st.top==-1)
    return 0;
  x=st.data[st.top];//先取出元素,在移动指针
  --(st.top);
  return 1;
}

初始化一个顺序栈整体是这样:

#include<stdio.h>
#define maxsize 100
typedef struct
{
  int data[maxsize];
  int top;
}sqstack;
void initStack(sqstack &st)
{
  st.top=-1;
}
int isEmpty(sqstack st)
{
  if(st.top==-1)
    return 1;
  else
    return 0;
  
}
int push(sqstack &st,int x)
{
  if(st.top==maxsize-1)
    return 0;
  ++(st.top);//先移动指针,在进栈
  st.data[st.top]=x;
  return 1;
}
int pop(sqstack &st,int &x)
{
  if(st.top==-1)
    return 0;
  x=st.data[st.top];//先取出元素,在移动指针
  --(st.top);
  return 1;
}

这是我的复习笔记,希望对大家也有帮助

目录
相关文章
|
3天前
|
算法 安全 测试技术
golang 栈数据结构的实现和应用
本文详细介绍了“栈”这一数据结构的特点,并用Golang实现栈。栈是一种FILO(First In Last Out,即先进后出或后进先出)的数据结构。文章展示了如何用slice和链表来实现栈,并通过golang benchmark测试了二者的性能差异。此外,还提供了几个使用栈结构解决的实际算法问题示例,如有效的括号匹配等。
golang 栈数据结构的实现和应用
01_设计一个有getMin功能的栈
01_设计一个有getMin功能的栈
|
3天前
|
前端开发
07_用队列实现栈
07_用队列实现栈
06_用栈来求解汉诺塔问题
06_用栈来求解汉诺塔问题
05_用一个栈实现另一个栈的排序
05_用一个栈实现另一个栈的排序
03_如何仅用递归函数和栈操作逆序一个栈
03_如何仅用递归函数和栈操作逆序一个栈
|
3天前
|
测试技术
02_由两个栈组成的队列
02_由两个栈组成的队列
|
7天前
|
存储
|
22天前
|
存储 人工智能 C语言
数据结构基础详解(C语言): 栈的括号匹配(实战)与栈的表达式求值&&特殊矩阵的压缩存储
本文首先介绍了栈的应用之一——括号匹配,利用栈的特性实现左右括号的匹配检测。接着详细描述了南京理工大学的一道编程题,要求判断输入字符串中的括号是否正确匹配,并给出了完整的代码示例。此外,还探讨了栈在表达式求值中的应用,包括中缀、后缀和前缀表达式的转换与计算方法。最后,文章介绍了矩阵的压缩存储技术,涵盖对称矩阵、三角矩阵及稀疏矩阵的不同压缩存储策略,提高存储效率。
|
22天前
|
C语言
数据结构基础详解(C语言):图的基本概念_无向图_有向图_子图_生成树_生成森林_完全图
本文介绍了图的基本概念,包括图的定义、无向图与有向图、简单图与多重图等,并解释了顶点度、路径、连通性等相关术语。此外还讨论了子图、生成树、带权图及几种特殊形态的图,如完全图和树等。通过这些概念,读者可以更好地理解图论的基础知识。