2019独角兽企业重金招聘Python工程师标准>>>
// main.h
#ifndef MAIN_H
#define MAIN_H#define TRUE 1
#define FALSE 0//节点
struct stack_cell{void *data;struct stack_cell* next;
};struct stack{struct stack_cell* top;
};//
struct stack* stack_new();
int stack_puch(struct stack* stack,void* data);
void stack_free(struct stack* stack);
void stack_pop(struct stack* stack);
void *stack_top(struct stack* stack);
int stack_empty(struct stack* stack);
#endif// main.c
#include
#include
#include
#include
#include "main.h"struct stack* stack_new()
{struct stack* new_stack = (struct stack*)malloc(sizeof(struct stack));if(NULL == new_stack){return NULL;}new_stack->top = NULL;return new_stack;
}int stack_push(struct stack* new_stack,int * data)
{struct stack_cell* new_cell = (struct stack_cell *)malloc(sizeof(struct stack_cell));if(NULL == new_cell){return 0;}// data;new_cell->data = data;//找到自己要挂在在哪个点上new_cell->next = new_stack->top;//更新栈的最顶端的信息.new_stack->top= new_cell;return 0;
}// 只做内存的释放工作,不做数据的输出,
void stack_pop(struct stack* new_stack)
{struct stack_cell* stack_cell_new = new_stack->top;new_stack->top = stack_cell_new->next;free(stack_cell_new);
}// 数据的输出,
void * stack_top(struct stack* stack)
{return stack->top->data;
}int stack_empty(struct stack* stack)
{return stack->top == NULL;
}void stack_free(struct stack* new_stack)
{struct stack_cell *p;if(!new_stack){return ;}p= new_stack->top;while(p){struct stack_cell *next = p->next;free(p);p=next;}free(new_stack);}int main()
{int a=0,b=1,c=2,d=3;int *e,*f,*g;struct stack* new_stack = stack_new();if(NULL == new_stack){return FALSE;}stack_push(new_stack,&a);stack_push(new_stack,&b);stack_push(new_stack,&c);stack_push(new_stack,&d);// tope = (int *)stack_top(new_stack);printf("%d\r\n",*e);// popstack_pop(new_stack);f= (int*)stack_top(new_stack);printf("%d\r\n",*f);stack_pop(new_stack);g=(int*)stack_top(new_stack);printf("%d\r\n",*g);stack_pop(new_stack);stack_free(new_stack);return 0;
}