#include<stdio.h>
#include<malloc.h>
//栈的大小
#define MaxSize 10
//数据类型
#define STACK_TYPE int
typedef struct Stack{
STACK_TYPE data[MaxSize];
int top;
}STACK,* PSTACK;
//是否为空
bool isEmpty(PSTACK);
//是否满
bool isFull(PSTACK);
//初始化栈
PSTACK initial(PSTACK);
//遍历栈
void traverse(PSTACK);
//出栈
int pop(PSTACK);
//入栈
bool push(PSTACK,int);
int main(void){
PSTACK pStack ;
pStack = initial(pStack);
push(pStack,2);
push(pStack,4);
push(pStack,7);
push(pStack,9);
push(pStack,5);
push(pStack,6);
STACK_TYPE a = pop(pStack);
printf("出栈的值为%d\n",a);
a = pop(pStack);
printf("出栈的值为%d\n",a);
traverse(pStack);
}
PSTACK initial(PSTACK pStack){
pStack = (PSTACK)malloc(sizeof(STACK));
if(pStack==NULL){
return false;
}
pStack->top = -1;
//printf("%d",pStack->top);
return pStack;
}
void traverse(PSTACK pStack){
int i;
for(i=0;i<((pStack->top+1));i++){
printf("%d\n",pStack->data[i]);
}
}
bool push(PSTACK pStack,STACK_TYPE val){
if(isFull(pStack)){
return false;
}else{
pStack->data[pStack->top+1]=val;
pStack->top++;
return true;
}
}
STACK_TYPE pop(PSTACK pStack){
STACK_TYPE temp;
if(isEmpty(pStack)){
exit(-1);
}else{
temp = pStack->data[pStack->top];
pStack->top--;
return temp;
}
}
bool isFull(PSTACK pStack){
if(pStack->top==MaxSize){
return true;
}else{
return false;
}
}
bool isEmpty(PSTACK pStack){
if(pStack->top==-1){
return true;
}else{
return false;
}
}
利用静态数组实现栈 c语言
最新推荐文章于 2023-05-15 08:55:16 发布