博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈的顺序存储
阅读量:4137 次
发布时间:2019-05-25

本文共 1269 字,大约阅读时间需要 4 分钟。

 #define Stack_Init_Size 100

#define StackIncreament 10
#include<stdio.h>
#include<malloc.h>
typedef struct{
 int *top;
 int *base;
 int stacksize;
}SqStack;//定义栈

void Push(SqStack &s, int e)
{
 if(s.top -s.base >=s.stacksize) {//本满,追加存储空间
  s.base=(int *)realloc(s.base,
        (s.stacksize+StackIncreament)*sizeof(int));
  if(!s.base) printf("error/n");
  s.top=s.base+s.stacksize;
  s.stacksize+=StackIncreament;
 }
 *s.top++=e;
}//向栈顶插入元素e

void InitStack(SqStack &s)
{
 s.base=(int *)malloc(Stack_Init_Size*sizeof(int)); //栈底地址
 if(!s.base) printf("error/n");
 s.top=s.base;
 s.stacksize =Stack_Init_Size;//构造空栈
 printf("输入6个栈元素:");
 for(int i=0;i<6;i++)
 {
  int a;
  scanf("%d",&a);
  Push(s,a);//向栈中插元素
 }
}//初始化栈

int StackEmpty(SqStack s)

{
 if(s.top ==s.base ) return 1;
 else return 0;
}//判断栈是否为空

 

void Pop(SqStack &s, int &e)

{
 if(s.top ==s.base ) printf("error2/n");
 e=*--s.top ;
}//删除栈顶元素

void Print(SqStack s)

{
 while(!StackEmpty(s))
 {
  int e;
  Pop(s,e);
  printf("%d ",e);
 }
}//输出栈元素

void GetTop(SqStack s,int &e)

{
 if(s.base ==s.top ) printf("error3/n");
 e=*(s.top -1);
}//取栈顶元素

int StackLength(SqStack s)

{
 return (s.top-s.base);
}

 

main()

{
 int a;//存储栈顶元素
 int b;//存储栈的长度
    SqStack s;
    InitStack(s);
    Print( s);
    GetTop(s,a);
    b=StackLength(s);
 printf("所取栈顶元素:%d/b",a);
 printf("栈的长度:%d",b);
 return 0;
}

转载地址:http://icmvi.baihongyu.com/

你可能感兴趣的文章
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
Mysql复制表以及复制数据库
查看>>
Linux分区方案
查看>>
如何使用 systemd 中的定时器
查看>>
git命令速查表
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(一):DOM生成XML
查看>>
XML生成(三):JDOM生成
查看>>
Ubuntu Could not open lock file /var/lib/dpkg/lock - open (13:Permission denied)
查看>>
collect2: ld returned 1 exit status
查看>>
C#入门
查看>>
C#中ColorDialog需点两次确定才会退出的问题
查看>>
数据库
查看>>