栈的基本用法(链式存储结构)

#include <stdio.h>
#include <stdlib.h>
#define  DataType  int

typedef struct StackNode
{
    DataType              Data;
    struct  StsckNode     *Next;
}SlStackType;

SlStackType      *InitSlStack( );
int              IsEmpty(SlStackType *top);
int              PushLStack(SlStackType *top,DataType x);
int              PopLStack(SlStackType *top,DataType x);

SlStackType      *InitSlStack()
{
    SlStackType *top;

    top==(SlStackType *)malloc(sizeof(SlStackType));
    if(top)
    {
           top->Next=NULL;
           return top;
    }
    else
    {
        printf("Failed to apply for the memory,program ends.\n");
        exit(0);
    }

}

int              IsEmpty(SlStackType *top)
{
    return(top->Next==NULL);
}

int              PushLStack(SlStackType *top,DataType x)
{
    SlStackType  *p;
    p=(SlStackType *)malloc(sizeof(SlStackType));
    if(p)
    {
        p->Data=x;
        printf("The element that enter the stack: %d\n",p->Data);
        p->Next=top->Next;
        top->Next=p;
        return 0;
    }
    else
    {
        printf("Failed to apply for the memory,program ends.\n");
        exit(0);
    }
}

int              PopLStack(SlStackType *top,DataType x)
{
    SlStackType  *p=NULL;
    if(IsEmpty(top))
    {
        printf("Empty stack,ends the program.\n");
        free(top);
        top=NULL;
        return 0;
    }
    else
    {
        p=top->Next;
        top->Next=p->Next;
        printf("The element that out the stack: %d\n",p->Data);
        free(p);
        p=NULL;
    }
}



int main(void)
{
    SlStackType  *top=NULL;
    DataType     x=0;

    top=InitSlStack( );
    PushLStack(top,1);
    PushLStack(top,2);
    PushLStack(top,3);
    PushLStack(top,4);
    printf("\n");
    PopLStack(top,x);
    PopLStack(top,x);
    PopLStack(top,x);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值