链栈

内容

运用栈的6种基本算法编写程序,用ABCDE入栈、DE出栈测试数据。


代码
#include <stdio.h>
#include <malloc.h>

typedef struct node
{
    char data;
    struct node * next;
}LinkStack;

//链栈键空栈
LinkStack * setStack()
{
    LinkStack * LS = NULL;
    return LS;
}

//链栈判栈空
int StackEmpty(LinkStack * LS)
{
    if(LS == NULL)
        return 1;
    else
        return 0;
}

//链栈取栈顶元素
char getTop(LinkStack * LS)
{
    if(LS == NULL)
        return 0;
    else
        return LS->data;
}

//链栈入栈
LinkStack* Push(LinkStack * LS, char ch)
{
    LinkStack * p;
    p = (LinkStack*)malloc(sizeof(LinkStack));
    p->data = ch;
    p->next = LS;
    LS = p;
    return LS;
}

//链栈出栈
LinkStack * Pop(LinkStack * LS)
{
    LinkStack * p = LS;
    LS = LS->next;
    free(p);
    return LS;
}

//链栈置空
LinkStack * InitStrack(LinkStack * LS)
{
    while (LS != NULL)
    {
        LS = Pop(LS);
    }
    return LS;
}

//输出链栈所有元素
void showStack(LinkStack * LS)
{
    LinkStack * p = LS;
    while(p != NULL)
    {
        printf("%c\t", getTop(p));
        p = p->next;
    }
    printf("\n");
}

int main(void)
{
    LinkStack * LS = setStack();
    LS = Push(LS, 'A');
    LS = Push(LS, 'B');
    LS = Push(LS, 'C');
    LS = Push(LS, 'D');
    LS = Push(LS, 'E');

    showStack(LS);
    LS = Pop(LS);   //E出栈
    showStack(LS);
    LS = Pop(LS);   //D出栈
    showStack(LS);

    return 0;
}

测试

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值