栈的创建和使用
栈的数据结构
栈是一个后进先出的容器,从栈顶入,从栈顶出。进栈也称压栈,通常用push函数。出栈,通常用pop函数。
用C语言实现栈
#include<stdio.h>
#include<stdlib.h>
#define INIT_SIZE 100
#define ADD_SIZE 10
typedef struct Stack{
int size;
int *top;
int *base;
}Stack;
void init(Stack &stack){
stack.size=INIT_SIZE;
stack.base=(int *)malloc(stack.size*sizeof(int));
stack.top=stack.base;
}
void push(Stack &stack,int element){
if(stack.top-stack.base==stack.size){
stack.base=(int *)realloc(stack.base,(stack.size+ADD_SIZE)*sizeof(int));
stack.top=stack.base+stack.size;
stack.size+=ADD_SIZE;
}
*stack.top=element;
stack.top++;
}
void pop(Stack &stack,int &element){
element=*(--stack.top);
}
bool isEmpty(Stack &stack){
return stack.top-stack.base==0;
}
int main(){
Stack stack;
init(stack);
for(int i=0;i<120;i++){
push(stack,i);
}
int element=0;
while(1){
if(isEmpty(stack)){
break;
}else{
pop(stack,element);
printf("%d ",element);
}
}
return 1;
}