C-链栈

来源:互联网 发布:阿里云和华为云的区别 编辑:程序博客网 时间:2024/05/24 05:22
/*思路:需要一个头指向栈顶*/#include <stdio.h>#include <stdlib.h>typedef char DataType;typedef struct stacknode{    DataType data;    struct stacknode * next;}StackNode,*LinkStack;// 判断栈空int StackEmpty(LinkStack top){    return top==NULL;}// 进栈LinkStack Push(LinkStack top,DataType x){    StackNode * p;    p=(StackNode *)malloc(sizeof(StackNode));    p->data=x;    p->next=top;    top=p;    return top;}// 出栈LinkStack Pop(LinkStack top,DataType * x){    if(StackEmpty(top))    {        printf("该栈是空\n");        exit(0);    }else    {        StackNode *p=top;        * x=p->data;        top=p->next;        free(p);        return top;    }}// 获取栈顶DataType GetTop(LinkStack top){    if(StackEmpty(top))    {        printf("该栈是空\n");        exit(0);    }    else    {        return top->data;    }}int main(void){    LinkStack top,mao;    mao=Push(top,'c');    mao=Push(mao,'b');    DataType x;    mao=Pop(mao,&x);    printf("%c\n",GetTop(mao));    return 0;}
0 0
原创粉丝点击