栈
2015-07-18 23:13
155 查看
/****************************************************************************************************
Description :入栈、出栈
Author :feng
Date :2015·07·18
****************************************************************************************************/
#include <stdio.h>
#include <malloc.h>
#define SUCCESS 0
#define UNSECCESS -1
#define MAX 5
#define FULL -1
#define NO_FULL 0
#define EMPTY -1
#define NO_EMPTY 0
struct stack_data
{
int num[MAX];
int top;
};
typedef struct stack_data Stack_data;
typedef struct stack_data * Stack;
void create(Stack *stack)
{
*stack =(Stack)malloc(sizeof(Stack_data));
}
void stack_init(Stack *stack)
{
(*stack)->top = -1;
}
int is_stack_full(Stack * stack)
{
if((*stack)->top == MAX)
return FULL;
return NO_FULL;
}
int is_stack_empty(Stack * stack)
{
if((*stack)->top == -1)
return EMPTY;
return NO_EMPTY;
}
int push_stack(Stack * stack,int n)
{
if(is_stack_full(stack) == NO_FULL)
{
(*stack)->top ++;
(*stack)->num[(*stack)->top] = n;
return (*stack)->num[(*stack)->top];
}
}
int pop_stack(Stack * stack)
{
if(is_stack_empty(stack) == NO_EMPTY)
return (*stack)->num[(*stack)->top --];
}
int main()
{
Stack stack;
create(&stack);
stack_init(&stack);
int i = 0;
for(i = 0;i < MAX ;i ++)
{
printf("push : %d\n",push_stack(&stack,i + 1));
}
is_stack_empty(&stack);
for(i = 0;i < MAX;i ++ )
{
printf("pop :%d\n",pop_stack(&stack));
}
return SUCCESS;
}
Description :入栈、出栈
Author :feng
Date :2015·07·18
****************************************************************************************************/
#include <stdio.h>
#include <malloc.h>
#define SUCCESS 0
#define UNSECCESS -1
#define MAX 5
#define FULL -1
#define NO_FULL 0
#define EMPTY -1
#define NO_EMPTY 0
struct stack_data
{
int num[MAX];
int top;
};
typedef struct stack_data Stack_data;
typedef struct stack_data * Stack;
void create(Stack *stack)
{
*stack =(Stack)malloc(sizeof(Stack_data));
}
void stack_init(Stack *stack)
{
(*stack)->top = -1;
}
int is_stack_full(Stack * stack)
{
if((*stack)->top == MAX)
return FULL;
return NO_FULL;
}
int is_stack_empty(Stack * stack)
{
if((*stack)->top == -1)
return EMPTY;
return NO_EMPTY;
}
int push_stack(Stack * stack,int n)
{
if(is_stack_full(stack) == NO_FULL)
{
(*stack)->top ++;
(*stack)->num[(*stack)->top] = n;
return (*stack)->num[(*stack)->top];
}
}
int pop_stack(Stack * stack)
{
if(is_stack_empty(stack) == NO_EMPTY)
return (*stack)->num[(*stack)->top --];
}
int main()
{
Stack stack;
create(&stack);
stack_init(&stack);
int i = 0;
for(i = 0;i < MAX ;i ++)
{
printf("push : %d\n",push_stack(&stack,i + 1));
}
is_stack_empty(&stack);
for(i = 0;i < MAX;i ++ )
{
printf("pop :%d\n",pop_stack(&stack));
}
return SUCCESS;
}
相关文章推荐
- HDU 3681 Prison Break
- C#操作数据库中的数据常用方法
- Androd UI学习之ImageSwitcher
- 怎样删除WIN7桌面上的IE图标
- Linux 远程连接命令
- 在Ubuntu 14.04 64bit上安装Master PDF Editor 3.2.81
- 运用C#读取导入的Excel部分数据为空的解决方法
- RadioGroup、RadioButton、CheckBox、Toast用法
- [BZOJ1058][ZJOI2007]报表统计
- 双向循环链表
- c++虚函数表解析
- GCD多线程的使用(二)
- 深入分析Cocos2d-x 2.0中的“纹理”
- Markdown 的一个例子
- #24 Swap Nodes in Pairs
- iOS bug处理
- JS Call()与Apply()
- java对字符的编码处理
- SpringMVC入门配置web.config及applicationContent-mvc.xml
- 转:线程池原理及创建(C++实现)