c语言RePutDate用法,C语言 栈的使用
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语言 栈的使用相关推荐
- c语言RePutDate用法,住宿结帐管理系统--C语言课程设计.doc
C语言课程设计 设计题目: 住宿结帐管理系统 专 业 计算机科学与技术.软件工程 班 级 计053.软件051.软件052 学 生 郭凌瑞 张亮 方宇 指导教师 王晓帆 2005-2006 年 2 学 ...
- c语言getchar用法_C语言 — 关键字
几十个关键字不多,用得多了自然会记住,相信大家也不会担心.下面是C语言中的 32 个关键字: 一丶C语言关键字 第一个关键字:auto 用来声明自动变量.可以显式的声明变量为自动变量.只要不是声明在所 ...
- c语言表达式用法,C语言 运算符、表达式和条件结构 用法总结
运算符.表达式和条件结构 内容概要:各种运算符的使用 运算符的优先级 表达式的计算 条件分支结构判断的常用结构 表达式: 表达式是运算符和操作数的组合,如下所示: s = ( n + 9 ) * ( ...
- c语言表达式用法,C语言开发之运算符、表达式用法
C语言中运算符和表达式数量之多,在高级语言中是少见的.正是丰富的运算符和表达式使C语言功能十分完善.这也是C语言的主要特点之一.C语言的运算符不仅具有不同的优先级,而且还有一个特点,就是它的结合性.在 ...
- c语言fgets用法,C语言文件操作中fgets与fputs函数讲解
C语言文件操作中fgets与fputs函数讲解 本文主要介绍了C语言文件操作中 fgets与fputs 函数详解的相关资料,下面是小编为大家整理的C语言文件操作中fgets与fputs函数讲解,欢迎参 ...
- c语言strup用法,C语言中的神兽strdup
C语言的确博大精深,在C语言的世界中遨游了那么多年,发现自己仍是菜鸟一枚,很多利器没有能够驾驭,今天介绍一个神兽,威力无比,但是却很少人能用得好. 函数原型: #include char *strdu ...
- c语言gather用法,R语言 tidyr包的三个重要函数:gather,spread,separate的用法和举例...
tidyr是Hadley(Tidy Data的作者Hadley Wickham)写的非常有用.并且经常会使用到的包,常与dplyr包结合使用(这个包也是他写的) 准备工作: 首先安装tidyr包(一定 ...
- c语言pushback用法,C语言:【动态顺序表】动态顺序表的初始化、打印、尾插PushBack、尾删PopBack...
#include #include #include #include #include typedef int DateType; typedef struct SeqList { DateType ...
- c语言assign用法,object-c语言的nonatomic,assign,copy,retain的区别
nonatomic: 非原子性访问,不加同步,多线程并发访问会提高性能.如果不加此属性,则默认是两个访问方法都为原子型事务访问. (atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写 ...
- R语言 sub()用法
R语言 sub()用法 subR语言中的函数用于替换字符串中模式的第一个匹配项.如果有一个字符串元素向量,那么它将替换所有元素中模式的第一个匹配项. 用法: sub(pattern, replacem ...
最新文章
- Echarts读取本地json文件渲染轨迹,亲测ok
- 业界首个面向NLP场景深度迁移学习框架
- Ubuntu上nfs的安装配置
- html中的js点击ipunt后加一,iphone 端 ipunt输入框光标偏移
- 利用redis漏洞远程添加计划任务挖取比特币
- struts导入Excel进行解析
- Oracle_杂货箱_不定期更新
- EelemntUI中e-form表单校验的使用以及表单校验的规则
- jzoj2755-[2012东莞市选]树的计数【dp,高精度】
- html向php传中文没有值,php - 为什么我的PHP / HTML表单没有向我发送数据 - SO中文参考 - www.soinside.com...
- java 守护线程 作用_java中守护线程的一些概念和用法
- 敢不敢做一个复杂的人
- Yii Framework的process flow分析
- CF891E Lust 生成函数
- 【数字信号去噪】基于matlab奇异值分解(SVD)数字信号降噪【含Matlab源码 1020期】
- 【易我数据恢复】超实用的数据恢复工具
- urp教务系统简单利用
- 宋浩《概率论与数理统计》自用笔记
- 推荐几个2021年App数据统计平台,分析数据运营必备工具
- 创业者回忆和乔布斯谈判:说错一个字就被臭骂拉黑