数据结构->栈ATD
来源:互联网 发布:天津河东淘宝街搬哪了 编辑:程序博客网 时间:2024/04/30 12:31
#include<stdio.h>#include<malloc.h>#include<stdlib.h>//----------------------------------------------------常定义//#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2#define INFEASIBLE -1#define STACK_INIT_SIZE 100;//存储空间初始分配量#define STACKINCREMENT 10;//存储空间分配量增量typedef int Status;
//----------------------------------------------顺序栈的定义//typedef char SElemType;//以char型数组模拟typedef struct{ SElemType *base; SElemType *top; int stacksize;}SqStack;
//-------------------------------------------------基本操作//Status InitStack(SqStack *S);//构造一个空栈SStatus DestroyStack(SqStack *S);//销毁栈S,S不再存在Status ClearStack(SqStack *S);//把S置为空栈Status StackEmpty(SqStack S);//若栈S为空栈,则返回TRUE,否则返回FALSEint StackLength(SqStack S);//返回S的元素个数,即栈的长度Status GetTop(SqStack S,SElemType *e);//若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERRORStatus Push(SqStack *S,SElemType e);//插入元素e为新的栈顶元素Status Pop(SqStack *S,SElemType *e);//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERRORStatus StackTraverse(SqStack S,Status (*visit)(SElemType));//从栈底到栈顶依次对栈中的每个元素调用visit().一旦visit()失败,则操作失败
//-----------------------------------------------基本操作的算法描述//Status InitStack(SqStack *S){//构造一个空栈S S->base=(SElemType *)malloc(100 * sizeof(SElemType));//100实为STACK_INIT_SIZE if(!S->base) exit(OVERFLOW); S->top =S->base; S->stacksize=STACK_INIT_SIZE; return OK;}//InitStack
Status GetTop(SqStack S,SElemType *e){//若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR if(S.top ==S.base) return ERROR; *e = *(S.top -1); return OK;}//GetTop
Status Push(SqStack *S,SElemType e){//插入元素e为新的栈顶元素 if(S->top - S->base >= S->stacksize){//栈满,追加存储空间 S->base =(SElemType *)realloc(S->base, (S->stacksize + 10 ) * sizeof(SElemType));//10实为STACKINCREMENT if(!S->base) exit(OVERFLOW);//分配内存失败 S->top = S->stacksize +S->base ; S->stacksize += STACKINCREMENT; } *S->top++ = e; return OK;}//Push
Status Pop(SqStack *S,SElemType *e){ //若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR if(S->top == S->base) return ERROR; *e = * --S->top ; return OK;}//Pop
Status DestroyStack(SqStack *S){//销毁栈S,S不再存在 S->stacksize =0; free(S->base); S->base = S->top = NULL; return OK;}//DestroyStack
Status ClearStack(SqStack *S){//把S置为空栈 S->top = S->base; return OK;}//ClearStack
Status StackEmpty(SqStack S){//若栈S为空栈,则返回TRUE,否则返回FALSE return S.top == S.base? TRUE:FALSE;}
int StackLength(SqStack S){//返回S的元素个数,即栈的长度 return (S.top-S.base)/sizeof(SElemType);}//StackLength
Status StackTraverse(SqStack S,Status (*visit)(SElemType)){//从栈底到栈顶依次对栈中的每个元素调用visit().一旦visit()失败,则操作失败 SElemType *p; for(p=S.base;p!=S.top;++p) if(!visit(*p)) return ERROR; return OK;}//StackTraverse
//--------------------------------------------------调试函数//Status tral(SElemType e){//遍历输出printf("%c ",e);return OK;}
0 0
- 数据结构->栈ATD
- 数据结构->线性表的顺序实现 ATD
- ATD 配置
- Eclipse 删除ATD
- AT命令之ATD
- crond atd 定时处理
- MC9S12XEP100 ATD模块 驱动程序
- 飞思卡尔ATD模块
- MC9S12XEP100的ATD模块(ADC12B16CV1)
- Linux定时任务 - atd和crond
- HCS12XEP100 ATD模块多通道采样
- HCS12XEP100 ATD模块单通道多次采样
- HCS12XEP100 ATD模块定时中断采样
- linux中的at命令,启动atd服务
- /usr/sbin/atd 和 /etc/init.d/atd有什么区别
- Linux下执行预定的任务Atd or Crond
- 仅执行一次的工作排程--atd服务
- 数据结构---栈
- OOP(2)类和对象,继承和多态
- Thread.sleep() & SystemClock.sleep()
- list与数组区别
- ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决
- 归并排序
- 数据结构->栈ATD
- 高德地图——地理围栏
- CodeForces 567B Berland National Library
- 华为机试---血型遗传检测
- 巫马子问道:
- unity人物场景切换到指定坐标
- acm之贪心算法题目10
- Android之Android Studio 快捷键整理分享
- 人脸识别:特征脸(Eigenface)