本人自己实现
/*
本实验证明:自己写的接口是可以用的,可以实现顺序栈的进栈出栈
实验需求
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ERROR 1
#define SUCCESS 0
#define MAXSIZE 7
typedef struct _stack{
int data[MAXSIZE];
int top;
}stack;
void StackInit(stack *p){
p->top=-1;
}
int StackPush(stack *p,int e){
if(p->top==MAXSIZE-1){
return ERROR;
}
p->top++;
p->data[p->top]=e;
return SUCCESS;
}
int ReadStackPop(stack *p,int *e){
if(p->top==-1){
return ERROR;
}
*e=p->data[p->top];
return SUCCESS;
}
int StackPop(stack *p,int *e){
if(p->top==-1){
return ERROR;
}
*e=p->data[p->top];
p->top--;
return SUCCESS;
}
int ShowStackElement(stack *p){
int i=0;
if(p->top!=-1){
while(i<MAXSIZE-1){
/*从栈底开始打印直到栈顶*/
printf("从栈底到栈顶元素:%d\n",p->data[i]);
i++;
}
}
return SUCCESS;
}
stack gStack;
int main(){
int i=0;
int arr[6]={0,};
stack *pStack=NULL;
stack *pBegin=NULL;
pStack=&gStack;
pBegin=pStack;
memset(&gStack,0,sizeof(gStack));
StackInit(pStack);
StackPush(pStack,6);
StackPush(pStack,7);
StackPush(pStack,8);
StackPush(pStack,9);
StackPush(pStack,10);
StackPush(pStack,11);
ShowStackElement(pBegin);
StackPop(pStack,&arr[0]);
StackPop(pStack,&arr[1]);
StackPop(pStack,&arr[2]);
StackPop(pStack,&arr[3]);
StackPop(pStack,&arr[4]);
StackPop(pStack,&arr[5]);
while(i<6){
printf("出栈后元素值:%d\n",arr[i]);
i++;
}
return 0;
}
运行结果:
从栈底到栈顶元素:6
从栈底到栈顶元素:7
从栈底到栈顶元素:8
从栈底到栈顶元素:9
从栈底到栈顶元素:10
从栈底到栈顶元素:11
出栈后元素值:11
出栈后元素值:10
出栈后元素值:9
出栈后元素值:8
出栈后元素值:7
出栈后元素值:6