2016-11-07 回答

#include"stdio.h"

#include"malloc.h"

#include"stdlib.h"

#define ok 1

#define error 0

#define overflow -2

#define true 1

#define false 0

typedef char elemtype;

typedef int status;

#define stack_init_size 100 //存储空间初始分配量

#define stackincrement 10 //存储空间分配增量

typedef struct

{

elemtype *base; //在栈构造和销毁之后,base的值为null

elemtype *top; //栈顶指针

int stacksize; //当前已分配的存储空间,以元素为单位

}sqstack;

// 构造一个空栈s

status initstack(sqstack &s)

{

s.base=(elemtype *)malloc(stack_init_size*sizeof(elemtype));

if(!s.base) //存储分配失败

exit (overflow);

s.top=s.base;

s.stacksize=stack_init_size;

return ok;

}//initstack

/// 若栈不空,则用e返回s的栈顶元素,并返回ok;否则返回error /

status gettop(sqstack s,elemtype &e)

{

if(s.top==s.base)

return error;

e=*(s.top-1);

return ok;

}//gettop

// 插入元素e为新的栈顶元素 /

status push(sqstack &s,elemtype e)

{

if(s.top-s.base>=s.stacksize) //栈满,追加存储空间

{

s.base=(elemtype *)realloc(s.base,(s.stacksize+stackincrement) * sizeof(elemtype));

if(!s.base)

exit (overflow);

s.top=s.base+s.stacksize;

s.stacksize+=stackincrement;

}

*s.top++=e;

return ok;

}//push

// 若栈不空,则删除s的栈顶元素,用e返回其值,并返回ok;否则返回error

status pop(sqstack &s,elemtype &e)

{

if(s.top==s.base)

return error;

e=*--s.top;

return ok;

}//pop

// main() //

void main()

{

int i;

char ch,e,c;

sqstack s;

initstack(s);

printf("1.push\t2.pop\t3.gettop\t4.exit\n");

while(1)

{

printf("请选择:");

scanf("%d",&i);

c=getchar(); //*****接受回车符******

switch (i)

{

case 1:

printf("请输入要插入的元素:");

scanf("%c",&ch);

push(s,ch);

break;

case 2:

printf("弹出栈顶元素:");

pop(s,e);

printf("%c\n",e);

break;

case 3:

printf("取栈顶元素:");

gettop(s,e);

printf("%c\n",e);

break;

case 4:

exit(0);

default:

printf("error!please reput a number\n");

}

}

}

c语言RePutDate用法,C语言 栈的使用相关推荐

  1. c语言RePutDate用法,住宿结帐管理系统--C语言课程设计.doc

    C语言课程设计 设计题目: 住宿结帐管理系统 专 业 计算机科学与技术.软件工程 班 级 计053.软件051.软件052 学 生 郭凌瑞 张亮 方宇 指导教师 王晓帆 2005-2006 年 2 学 ...

  2. c语言getchar用法_C语言 — 关键字

    几十个关键字不多,用得多了自然会记住,相信大家也不会担心.下面是C语言中的 32 个关键字: 一丶C语言关键字 第一个关键字:auto 用来声明自动变量.可以显式的声明变量为自动变量.只要不是声明在所 ...

  3. c语言表达式用法,C语言 运算符、表达式和条件结构 用法总结

    运算符.表达式和条件结构 内容概要:各种运算符的使用 运算符的优先级 表达式的计算 条件分支结构判断的常用结构 表达式: 表达式是运算符和操作数的组合,如下所示: s = ( n + 9 ) * ( ...

  4. c语言表达式用法,C语言开发之运算符、表达式用法

    C语言中运算符和表达式数量之多,在高级语言中是少见的.正是丰富的运算符和表达式使C语言功能十分完善.这也是C语言的主要特点之一.C语言的运算符不仅具有不同的优先级,而且还有一个特点,就是它的结合性.在 ...

  5. c语言fgets用法,C语言文件操作中fgets与fputs函数讲解

    C语言文件操作中fgets与fputs函数讲解 本文主要介绍了C语言文件操作中 fgets与fputs 函数详解的相关资料,下面是小编为大家整理的C语言文件操作中fgets与fputs函数讲解,欢迎参 ...

  6. c语言strup用法,C语言中的神兽strdup

    C语言的确博大精深,在C语言的世界中遨游了那么多年,发现自己仍是菜鸟一枚,很多利器没有能够驾驭,今天介绍一个神兽,威力无比,但是却很少人能用得好. 函数原型: #include char *strdu ...

  7. c语言gather用法,R语言 tidyr包的三个重要函数:gather,spread,separate的用法和举例...

    tidyr是Hadley(Tidy Data的作者Hadley Wickham)写的非常有用.并且经常会使用到的包,常与dplyr包结合使用(这个包也是他写的) 准备工作: 首先安装tidyr包(一定 ...

  8. c语言pushback用法,C语言:【动态顺序表】动态顺序表的初始化、打印、尾插PushBack、尾删PopBack...

    #include #include #include #include #include typedef int DateType; typedef struct SeqList { DateType ...

  9. c语言assign用法,object-c语言的nonatomic,assign,copy,retain的区别

    nonatomic: 非原子性访问,不加同步,多线程并发访问会提高性能.如果不加此属性,则默认是两个访问方法都为原子型事务访问. (atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写 ...

  10. R语言 sub()用法

    R语言 sub()用法 subR语言中的函数用于替换字符串中模式的第一个匹配项.如果有一个字符串元素向量,那么它将替换所有元素中模式的第一个匹配项. 用法: sub(pattern, replacem ...

最新文章

  1. Echarts读取本地json文件渲染轨迹,亲测ok
  2. 业界首个面向NLP场景深度迁移学习框架
  3. Ubuntu上nfs的安装配置
  4. html中的js点击ipunt后加一,iphone 端 ipunt输入框光标偏移
  5. 利用redis漏洞远程添加计划任务挖取比特币
  6. struts导入Excel进行解析
  7. Oracle_杂货箱_不定期更新
  8. EelemntUI中e-form表单校验的使用以及表单校验的规则
  9. jzoj2755-[2012东莞市选]树的计数【dp,高精度】
  10. html向php传中文没有值,php - 为什么我的PHP / HTML表单没有向我发送数据 - SO中文参考 - www.soinside.com...
  11. java 守护线程 作用_java中守护线程的一些概念和用法
  12. 敢不敢做一个复杂的人
  13. Yii Framework的process flow分析
  14. CF891E Lust 生成函数
  15. 【数字信号去噪】基于matlab奇异值分解(SVD)数字信号降噪【含Matlab源码 1020期】
  16. 【易我数据恢复】超实用的数据恢复工具
  17. urp教务系统简单利用
  18. 宋浩《概率论与数理统计》自用笔记
  19. 推荐几个2021年App数据统计平台,分析数据运营必备工具
  20. 创业者回忆和乔布斯谈判:说错一个字就被臭骂拉黑

热门文章

  1. 4. PHP 操作 memcache(1)
  2. Influx kafka
  3. 解决Myeclipse中断点不起作用的方法
  4. 安装apache-2.2.6, php-5.2.5, mysql-5.0.2的过程
  5. sql server期中综合练习
  6. sql语句如何拼接Java变量
  7. java中用Executor代替Thread的四大理由
  8. AjaxPro.Dll运用
  9. Linux下编译protobuf
  10. C++ 非类型的模板参数