顺序栈的实现

#include<stdio.h>

#include<stdlib.h>

#define MAXSIZE 10

typedef int DataType;

typedef struct Stack{ DataType stack[MAXSIZE];//定义数组

int top;//栈顶只是去

}StackSeq;

void initStack(StackSeq *seq);//初始化

int isEmpty(StackSeq seq);//非空

int StackPush(StackSeq *seq,DataType x);//插入函数

int stackPop(StackSeq *seq,DataType *x);//出栈

int stackGet(StackSeq seq,DataType *d);//取栈顶元素

int main(void){ int x,i; StackSeq seq; initStack(&seq); isEmpty(seq); for(i=0;i<10;i++) StackPush(&seq,i+1); //stackGet(seq,&x); for(i=0;i<10;i++){

stackPop(&seq,&x); printf("x=%d\n",x); } printf("%d\n",seq.top); isEmpty(seq); return 0; }

void initStack(StackSeq *seq) { seq->top=0; }

int StackPush(StackSeq *seq,DataType x){ if(seq->top==MAXSIZE){ printf("顺序栈满\n"); return 0; } seq->stack[seq->top]=x; seq->top++; printf("入栈成功\n"); return 1;

} int isEmpty(StackSeq seq){ if(seq.top<=0){ printf("空\n"); return 0; }

if(seq.top>0){
	printf ("非空\n");
	return 1;
} 

}

int stackPop(StackSeq *seq,DataType *x){ if(seq->top<=0){ printf("栈空\n"); return 0; } seq->top--; *x=seq->stack[seq->top];

printf("出栈成功\n");
return 1;

}

int stackGet(StackSeq seq,DataType *d){ if(seq.top<=0){ printf("取栈顶元素空\n"); return 0; }

*d=seq.stack[seq.top-1];
printf("取栈顶元素成功\n");
return 1;

}

猜你喜欢

转载自my.oschina.net/u/2511906/blog/1623212