c语言描述的顺序栈实现
#include<stdio.h>
#include<stdlib.h>
#define initsize 100
#define ok 1
#define error 0
typedef int Status;
typedef char ElemType;
typedef struct{
ElemType *base;
ElemType *top;
int stacksize;
}SqStack;
static SqStack *S;
Status InitStack(SqStack *S){
S->base=(ElemType *)malloc(initsize*sizeof(ElemType));
if(!S->base){
printf("分配内存失败!");
exit(error);
}
S=->top=S->base;
S->stacksize=initsize;
return ok;
}
Status StackEmpty(SqStack *S){
if(S->base==S->top){
return true;
}else{
return false;
}
}
Status DestroyStack(SqStack *S){
free(S->base);
return 0;
}
Status ClearStack(SqStack *S);
Status StackEmpty(SqStack *S);
Status StackLength(SqStack *S);
Status GetTop(SqStack *S,ElemType e){
if(S->top!=S->base){
e=*(S->top-);//非空栈的栈顶指针始终在栈顶元素的下一个位置
}
return e;
} Status Push(SqStack *S,ElemType e){
if(S->top-S->base>=initsize){
S->base=(ElemType *)realloc(S->base,(initsize+)*sizeof(ElemType))
if(!S->base){
printf("内存分配失败");
exit(error);
}
S->stacksize+=;
S->top=S->base+S->stacksize;//此处的initsize为没有重新分派的initsize因为分配了空间不代表着top就要指向最顶
}
*S->top++=e;
return ok;
}
Status Pop(SqStack *S,ElemType *e){
if(S->top!=S->base){
S->top--;
e=*S->top;
return ok;
}else{
return error;
}
}
Status StackTraverse(const SqStack *S){
int *p;
if(S->base==S->top){
exit(error);
}else{
for(p=S->base;p<S->top;p++){
printf("%c \n",*p);
}
}
}
void main(){
int m;
InitStack(S);
printf("请输入一个入栈元素\n",&m);
Push(S,m);
StackTraverse(S);
}
c语言描述的顺序栈实现的更多相关文章
- c语言描述的顺序表实现
//顺序表的实现:(分配一段连续地址给顺序表,像数组一样去操作) #include<stdio.h> #include<stdlib.h> #define OK 1 #defi ...
- 【数据结构】之栈(C语言描述)
栈(Stack)是编程中最常用的数据结构之一. 栈的特点是“后进先出”,就像堆积木一样,堆的时候要一块一块堆到最上面,拆的时候需要从最上面一块一块往下拆.栈的原理也一样,只不过它的操作不叫堆和拆,而是 ...
- 【数据结构】之顺序表(Java语言描述)
之前总结过使用C语言描述的顺序表数据结构.在C语言类库中没有为我们提供顺序表的数据结构,因此我们需要自己手写,详细的有关顺序表的数据结构描述和C语言代码请见[我的这篇文章]. 在Java语言的JDK中 ...
- 利用栈实现算术表达式求值(Java语言描述)
利用栈实现算术表达式求值(Java语言描述) 算术表达式求值是栈的典型应用,自己写栈,实现Java栈算术表达式求值,涉及栈,编译原理方面的知识.声明:部分代码参考自茫茫大海的专栏. 链栈的实现: pa ...
- 顺序栈的基本操作(C语言)
由于现在只学了C语言所以就写这个C语言版的栈的基本操作 这里说一下 :网上和书上都有这种写法 int InitStack(SqStack &p) &p是取地址 但是这种用法好像C并不 ...
- 数据结构与算法之顺序栈C语言实现
顺序栈是一种特殊的顺序表,主要操作是入栈和出栈.将顺序表加一些特定限制,就成了顺序栈. 注: 1.顺序栈C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简 ...
- C语言实现顺序栈
C语言实现顺序栈,顺便加深刻++i,++i的区别 #include <stdio.h>#include <stdlib.h>#define maxsize 100/*写在前面的 ...
- C++语言实现顺序栈
C++语言实现顺序栈 在写C语言实现顺序栈的时候,我已经向大家介绍了栈的特点以及介绍了栈的相关操作,并利用C语言实现了相关算法.在这里小编就不在继续给大家介绍了,需要温习的可以去我的博客看看.在这篇博 ...
- C语言实现顺序栈以及栈的特点
什么是栈? 同顺序表和链表一样,栈也是用来存储逻辑关系为 "一对一" 数据的线性存储结构,如下图所示. 从上图我们看到,栈存储结构与之前所学的线性存储结构有所差异,这缘于栈对数据 ...
随机推荐
- android studio 框架搭建:加入注解框架Annotations
参考github上的demo,新建一个project后,会有一个位于app文件夹下的局部build.gradle文件和一个位于根目录project下的全局build.gradle文件,我们要修改的是局 ...
- [Modelsim] 仿真的基本操作
切换路径,建立库并编译所有源文件之后, 键入命令: vopt +acc topmodulename -o top vsim top 其中topmodulename是顶层模块的名称.
- [转]Load ASP.NET MVC Partial Views Dynamically Using jQuery
本文转自:http://www.binaryintellect.net/articles/218ca630-ba50-48fe-af6e-6f754b5894aa.aspx Most of the t ...
- [转] .net core Session , Working with a distributed cache
本文转自:https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed By Steve Smith+ Di ...
- 研究SSIS时候的一些常见错误
1.[OLE DB 目标 [59]] 错误: SSIS 错误代码 DTS_E_OLEDBERROR.出现 OLE DB 错误.错误代码: 0x80004005.已获得 OLE DB 记录.源:“Mic ...
- FreeSwitch无法启动,提示进程pid锁定的解决方法
来源:https://stackoverflow.com/questions/12817232/how-do-i-call-a-local-softphone-on-freeswitch error ...
- [转]scp命令学习
原博客地址http://www.cnblogs.com/peida/archive/2013/03/15/2960802.html scp是secure copy的简写,用于在Linux下进行远程拷贝 ...
- Django组件——分页器(paginator)
一.视图层 from django.shortcuts import render # Create your views here. from .models import Book from dj ...
- height百分比以及高度自适应问题
1. 你曾经是否说想要 高度占页面或者占div百分比无效的问题,相信你也搜索过了,就是说 需要 设置父亲父亲一直到祖宗html都要设置百分比,才有效果. 总之一句话:想用百分比设置他的高度,则它的父 ...
- vuejs+axios发送请求
Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource 目前主流的 Vue 项目,都选择 axios ...