您的位置:首页 > 其它

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;

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