链式栈的实现

来源:互联网 发布:crf 算法 特征模板 编辑:程序博客网 时间:2024/04/30 12:30
#include <stdio.h>struct stack{    int num;    struct stack *next;};typedef struct stack * Stack; //Stack 可以定义结构体指针类型的变量enum Result{STACK_EMPTY,STACK_NOT_EMPTY};  //枚举,作用是消除幻数void init_stack(Stack * top){    *top = NULL;}int get_stack_top(Stack *top){    }int is_stack_empty(Stack *top)      //定义一个检查是否是空栈的函数,在出栈时会用到{    if(*top == NULL)    {        return STACK_EMPTY;    }    return STACK_NOT_EMPTY;}       void push_stack(Stack *newstack, Stack *top)   //入栈函数,栈尾一直指向NULL{    (*newstack)->next = (*top);    (*top) = *newstack;}int pop_stack(Stack *top)                    //出栈函数,要进行是否为空栈检查             {    if(is_stack_empty(top) == STACK_EMPTY)    {        return STACK_EMPTY;    }    int num = (*top)->num;    Stack temp = *top;    *(top) = (*top)->next;    free(temp);             //每出栈一个节点,就释放一段空间    temp = NULL;    return num;}int main(){    int i;    Stack top;    Stack newstack;        //定义一个新的结构体类型的指针    init_stack(&top);    for(i = 0; i < 10; i++)    {        newstack = (Stack)malloc(sizeof(struct stack));    //给指针分配空间newstack->num = i + 1;                                  //初始化该:指针push_stack(&newstack,&top);    }    for(i = 0; i < 10; i++)    {        printf("pop:%d\n",pop_stack(&top));    }        return 0;}



链式栈的实现

0 0
原创粉丝点击