c/c++语言开发共享C语言栈之顺序栈

目录定义1.建立空栈2.进栈3.出栈4.读栈顶元素5.遍历栈总结定义用顺序存储方式实现的栈称为顺序栈,顺序栈对应于顺序表。设栈中的数据元素的类型是整型,用一个足够长的一维数组s来存放元素,数组的最大容

目录
  • 定义
  • 1.建立空栈
  • 2.进栈
  • 3.出栈
  • 4.读栈顶元素
  • 5.遍历栈
  • 总结

定义

用顺序存储方式实现的栈称为顺序栈,顺序栈对应于顺序表。

设栈中的数据元素的类型是整型,用一个足够长的一维数组s来存放元素,数组的最大容量为stack_intsize。同时假设栈顶指针top。(在以下的程序中,top不是指向当前的栈顶元素,而是指向下一次将要进栈的元素的存储位置)

顺序栈可以描述如下:

#define stack_intsize 50 /*分配栈的最大存储空间*/  #define datatype int /*定义栈中数据元素的类型*/  datatype s[stack_intsize];/*用来存放栈中数据元素的内存空间*/  int top;/*定义栈顶指针*/

可以用结构体数组来实现顺序栈:

#define stack_intsize 50  #define datatype int  typedef struct  {      datatype s[stack_intsize];      int top;  } stack;  stack *st;/*指针st用来引用一个顺序栈*/

栈顶指针动态地反映了栈中元素的变化情况,top=0时,表示空栈top=1时,表示已经有一个元素进栈进栈时,栈顶指针top上移,top加1top=stack_intsize,表示栈满出栈时,栈顶指针top下移,top减1

1.建立空栈

stack *initstack()  {      stack *s;      s = (stack *)malloc(sizeof(stack));      s->top = 0;      return s;  }

2.进栈

void push(stack *st, datatype x)  {      if (st->top >= stack_intsize)          printf("栈已满,不能入栈!n");/*若栈满则不能进栈,输出出错信息*/      else      {          st->s[st->top] = x;/*元素x进栈*/          st->top++;/*栈顶指针top加1*/      }  }

3.出栈

void pop(stack *st)  {      if (st->top == 0)          printf("栈空,不能出栈!n");/*若栈空则不能出栈,且输出栈空的信息*/      else/*栈非空*/      {          st->top--;/*top减1,元素出栈*/      }  }

4.读栈顶元素

datatype readtop(stack *st)  {      datatype x;      if (st->top == 0)      {          printf("栈中无元素");          return (0);      }      /*若栈空则返回0*/      else      {          x = st->s[st->top-1];/*取栈顶元素*/          return (x);/*返回x即栈顶元素的值*/      }  }

5.遍历栈

结合元素出栈算法和读取栈顶元素算法,使用循环,当st->top=0时结束循环,即可遍历栈

void showstack(stack *st)  {      while (st->top > 0)      {          st->top--;          printf("%d", st->s[st->top]);      }  }

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注<计算机技术网(www.ctvol.com)!!>的更多内容!    

需要了解更多c/c++开发分享C语言栈之顺序栈,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/1058911.html

(0)
上一篇 2022年3月2日
下一篇 2022年3月2日

精彩推荐