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

C语言实现栈

2015-10-26 21:06 288 查看
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct stack_tag{
int top;
int num;
int *data;
} stack;

stack * stack_init(int num){
stack *s = (stack*)malloc(sizeof(stack));
s->num = num;
s->data = (int*)malloc(sizeof(int) * num);
s->top = -1;
return s;
}

void stack_destroy(stack *s){
free(s->data);
free(s);
}

int stack_push(stack *s, int data){
if(s->top == s->num - 1)
return -1;
s->data[++s->top] = data;
return 0;
}

int stack_pop(stack *s, int *data){
if(s->top == -1){
return -1;
}
*data =  s->data[s->top --];
return 0;
}
bool stack_empty(stack *s){
return s->top == -1;
}

int main() {
stack *s = stack_init(3);
stack_push(s, 1);
stack_push(s, 2);
while(!stack_empty(s)){
int data = 0;
stack_pop(s, &data);
printf("%d\n", data);
}
return 0;
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: