您的位置:首页 > 编程语言 > C语言/C++

利用静态数组实现栈 c语言

2015-08-02 01:10 399 查看
#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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息