链栈操作实现

来源:互联网 发布:app搬家软件下载 编辑:程序博客网 时间:2024/06/07 09:46
#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct linknode{    ElemType data;    struct linknode *next;}LiStack;/****************初始化链栈********************/void InitStack(LiStack* &s){    s=(LiStack*)malloc(sizeof(LiStack));    s->next=NULL;}/****************销毁链栈********************/void DestroyStack(LiStack* &s){    LiStack *p=s->next,*q=s;    while(p!=NULL)    {        free(q);        q=p;        p=p->next;    }    free(p);}/****************判断链栈是否为空********************/bool StackEmpty(LiStack* &s){    return (s->next==NULL);}/****************进栈********************/void Push(LiStack* &s,ElemType &e){    LiStack *p;    p=(LiStack*)malloc(sizeof(LiStack));    p->data=e;    p->next=s->next;    s->next=p;}/****************出栈********************/bool Pop(LiStack* &s,ElemType &e){    LiStack *p=s->next;    if(s->next!=NULL)        return false;    else    {        e=p->data;        s->next=p->next;        free(p);        return true;    }}/****************得到栈顶元素********************/bool GetTop(LiStack* &s,ElemType &e){    LiStack *p=s->next;    if(s->next==NULL)        return false;    e=p->data;    return true;}/****************输出链栈元素********************/void PrintStack(LiStack* &s){    LiStack *p=s->next;    while(p!=NULL)    {        printf("%d ",p->data);        p=p->next;    }}int main(){    LiStack *s;    int a=9;    InitStack(s);    Push(s,a);    PrintStack(s);}
0 0
原创粉丝点击