清华跨考计算机党学习之路记录-3静态数组实现栈的各种操作
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#define stack_size 100
#define stack_add 10
using namespace std;
typedef struct Stack{
int *base;
int *top;
int stacksize;
}Stack;
bool InitStack(Stack &s){
s.base=(int *)malloc(stack_size * sizeof(int));
if(!s.base)
cout<<"初始化失败"<<endl;
s.top=s.base;
s.stacksize=stack_size;
cout<<"初始化成功"<<endl;
return true;
}
bool EmptyStack(Stack s){
if(s.top==s.base)
{
cout<<"这是空栈"<<endl;
return true;
}
else{
cout<<"这不是空栈"<<endl;
return false;
}
}
int push(Stack &s,int data){
if(s.top-s.base>s.stacksize){
s.base=(int *)realloc(s.base,(s.stacksize+stack_add)*sizeof(int));
if(!s.base){
cout<<"分配失败"<<endl;
}
}
*++s.top=data;
return 1;
}
int pop(Stack &s,int data){
data=*s.top--;
return data;
}
int stackvisit(Stack s){
int length=0;
int *q=s.top;
while(q!=s.base){
cout<<"数组的元素为"<<endl;
cout<<*q--<<endl;
length++;
}
cout<<"栈的长度为"<<length<<endl;
return length;
}
int main(){
Stack s;
InitStack(s);
EmptyStack(s);
push(s,3);
push(s,4);
push(s,5);
stackvisit(s);
EmptyStack(s);
int c=pop(s,c);
cout<<c<<endl;
}