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; }
相关文章推荐
- 【C语言】【面试题】5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果问题
- C++字符数组的定义与初始化
- C语言—常见的内存分配函数
- C++:多重继承
- C语言中的常量
- C语言之算法初步(汉诺塔--递归算法)
- 黑马程序员****C语言基础****C语言的基本概念
- 顶层const与底层const
- C++:调整基类成员在派生类中的访问属性的其他方法(同名成员和访问声明)
- 【C语言】编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数。
- 【C语言】【笔试题】编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。
- 黑马程序员——C语言基础---结构体
- IOS开发笔记10-字符串-C语言笔记
- C++:派生类的构造函数和析构函数
- 【C语言】【笔试题】实现函数itoa(int n,char s[]),将整数n这个数字转换为对应的字符串,保存到s中
- C语言指针总结
- C++:基类和派生类
- C++拷贝构造函数语意学 copy constructor(The Semantics of Constructors)
- IOS开发笔记9-数组-C语言笔记
- const int *p, int *const p的区别