#include <stdio.h>
#include <stdlib.h>

typedef struct node{
    int data;
    struct node* pnext;
}node,*pnode;

typedef struct stack{
    pnode ptop;
    pnode pbottom;
}stack,*pstack;

void initstack(pstack ps);
void push(pstack ps , int idata);
void pop(pstack ps);
void traverse(pstack ps);

int main()
{
    pstack S = (pstack)malloc(sizeof(stack));
    push(S,1);
    push(S,2);
    push(S,3);
    traverse(S);
    pop(S);
    pop(S);
    traverse(S);

    return 0;
}

void initstack(pstack ps){
    ps -> ptop = (pnode) malloc(sizeof(node));
    if(NULL == ps -> ptop){
        puts("error!");
        exit(-1);
    }

    ps -> pbottom = ps -> ptop ;
    ps -> ptop -> pnext = NULL;
}

void push(pstack ps,int idata){
    pnode pnew = (pnode)malloc(sizeof(node));
    if(NULL == pnew){
        puts("error!");
        exit(-1);
    }
    pnew->data = idata;
    pnew->pnext = ps->ptop;
    ps->ptop = pnew;
}

void traverse(pstack ps){
    pnode p = ps->ptop;

    while(p != ps->pbottom){
        printf("%d  ",p->data);
        p = p->pnext;
    }
    puts("");
}

int empty(pstack ps){
    if(NULL == ps->ptop)
        return 1;
    else
        return 0;
}

void pop(pstack ps){
    if(empty(ps)){
        puts("error!");
        exit(-1);
    }
    pnode p = ps->ptop;
    ps->ptop = p->pnext;
    free(p);
}
posted on 2012-05-01 12:53  fisher2012  阅读(86)  评论(0编辑  收藏  举报