4.用可动态分配的一维数组实现栈
来源:互联网 发布:vs2017 windows.h 编辑:程序博客网 时间:2024/04/26 04:33
#include<stdio.h>#include<stdlib.h>//用可动态分配的一维数组实现栈#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define OK 0#define ERROR 1typedef int SElemType;typedef bool Status;typedef struct{SElemType *base;SElemType *top;int stacksize;}SqStack;// init stackStatus InitStack(SqStack &S){S.base = (SElemType *)malloc(sizeof(SElemType)*STACK_INIT_SIZE);if (!S.base) return ERROR;S.top = S.base;S.stacksize = STACK_INIT_SIZE;return OK;}Status DestroyStack(SqStack &S){free (S.base);S.base = S.top = NULL;S.stacksize = 0;return OK;}Status ClearStack(SqStack &S){S.base = S.top = NULL;S.stacksize = 0;return OK;}Status StackEmpty(SqStack &S){return S.top == S.base;}Status StackLengh(SqStack &S){//return (S.top - S.base)/sizeof(SElemType);return S.top - S.base;}//pushStatus StackPush(SqStack &S,SElemType e){if (S.top - S.base >= S.stacksize){//栈满 申请空间S.base = (SElemType *)realloc(S.base, (S.stacksize + STACKINCREMENT)*sizeof(SElemType));if (!S.base) return ERROR;S.top = S.base + S.stacksize;S.stacksize += STACKINCREMENT;}*S.top++ = e;return OK;}//by zhaoyang 2014.4.16//popStatus StackPop(SqStack &S,SElemType &e){if (S.base == S.top) return ERROR;e = *--S.top;return OK;}//栈也存在链式表示 我就仅以 顺序栈(数组) 为例int main(){SqStack A;int e;InitStack(A);StackPush(A, 1);StackPop(A, e);printf("%d\n",e);return 0;}
0 0
- 4.用可动态分配的一维数组实现栈
- 1. 线性表(用可动态分配的一维数组实现)
- 动态分配二维数组的实现
- 动态分配一维数组、二维数组!
- 二维数组的动态分配,可扩充成多维数组
- 动态分配的栈实现
- 在严蔚敏《数据结构(C语言版)》中,不能用动态分配的一维数组来实现循环队列
- C语言中动态分配数组(一维)
- C语言动态分配一维数组
- 一维数组动态分配(c语言)
- C语言动态分配一维数组
- 一维数组和二维数组空间的内存动态分配、参数传递
- c和c++中的一维数组和二维数组的动态分配内存,以及参数传递
- C#动态分配一维数组和二维数组函数
- 用new动态分配数组的缺陷
- c++数组的动态分配
- 多维数组的动态分配
- 二维数组的动态分配
- 学习ROS笔记之URDF(部分)
- 自己动手制作无线U盘
- shell脚本帐号和隐藏密码登录
- jQuery垂直Tabs新闻滑块
- java简单项目练习3
- 4.用可动态分配的一维数组实现栈
- TCP/IP学习基础知识
- 经典题目——字符串全排序
- 用intellij idea 11创建一个Java Web项目
- RAM芯片端改造
- android bitmap compress(图片压缩)
- android中activity的生命周期
- Java定时任务实现
- 一个Linux下C线程池的实现