概述
#include<stdio.h>
#include<sys/malloc.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
#define STACK_INT_SIZE 5 /*存储空间初始分配量*/
#define STACKINCREMENT 5 /*存储空间分配增量*/
typedef int ElemType; /*定义元素类型*/
typedef struct{
ElemType *base;
ElemType top;
int stacksize; /*当前已经分配的存储空间*/
}SqStack;
int InitStack(SqStack *S); /*构造空栈*/
int push(SqStack *S,ElemType *e); /*入栈*/
int pop(SqStack S,ElemType *e); /*出栈*/
int CreateStack(SqStack *S); /*创建栈*/
void PrintStack(SqStack *S); /*出栈并输出栈中元素*/
int InitStack(SqStack *S){
S->base=(ElemType *)malloc(STACK_INT_SIZE*sizeof(ElemType));
if (!S->base) {
return ERROR;
}
S->top=-1;
S->stacksize=STACK_INT_SIZE;
return OK;
}
int Push(SqStack *S,ElemType e){
if(S->top==STACK_INT_SIZE-1){
S->base=(ElemType *)realloc(S->base, STACKINCREMENT*sizeof(ElemType));
S->stacksize=S->stacksize+STACKINCREMENT;
}
S->top++;
*(S->base+S->top)=e;
return 1;
}
int Pop(SqStack *S,ElemType *e){
if(S->top==-1) return 0;
else{
*e=*(S->base+S->top);
S->top--;
return 1;
}
}
int CreateStack(SqStack *S){
int e;
if(InitStack(S))
printf("Init Success!n");
else{
printf("Init Fall!n");
return ERROR;
}
printf("input data:(Terminated by inputing a character)n");
while (scanf("%d",&e))
Push(S, e);
return OK;
}
void PrintStack(SqStack *S){
ElemType e;
while (Pop(S, &e)) {
printf("%3d",e);
}
}
int main() {
SqStack SS;
printf("n1-createStackn");
CreateStack(&SS);
printf("n2-createStackn");
PrintStack(&SS);
printf("n");
return 0;
}
最后
以上就是体贴紫菜为你收集整理的顺序栈基本操作(动态分配空间)的全部内容,希望文章能够帮你解决顺序栈基本操作(动态分配空间)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复