链栈的基本算法

初始化一个链栈 ,将元素e,f,g,h,i依次进栈,获取栈顶元素,将栈中元素依次出栈并输出

链栈的表示

既采用链式储存结构实现的栈

具体代码
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
typedef int ElementType;
//定义
typedef struct node {
    ElementType data;
    struct node* next;
}StackNode, * LinkStack;
//判断是否为空
void InitStack(LinkStack top) {
    top->next = NULL;
}
//初始化
int IsEmpty(LinkStack top) {
    if (top->next == NULL)
        return TRUE;
    return FALSE;
}
//入栈
int Push(LinkStack top, ElementType element) {
    LinkStack temp;
    temp = (LinkStack)malloc(sizeof(StackNode));
    temp->data = element;
    temp->next = top->next;
    top->next = temp;
    return TRUE;
}
//出栈
int Pop(LinkStack top, ElementType* element) {
    if (IsEmpty(top))
        return FALSE;
    StackNode* temp = top->next;
    *element = temp->data;
    top->next = temp->next;
    free(temp);
    return TRUE;
}
//获取栈顶
int GetTop(LinkStack top, ElementType* element) {
    if (top->next == NULL)
        return FALSE;
    *element = top->next->data;
    return TRUE;
}
int main(){
    LinkStack s;
    int i;
    int result;
    s = (LinkStack)malloc(sizeof(StackNode));
    InitStack(s);
        Push(s, 'e');
        Push(s, 'f');
        Push(s, 'g');
        Push(s, 'h');
        Push(s, 'i');
    GetTop(s, &result);
    printf("栈顶元素为:%c\n", result);
    printf("元素依次出栈:\n");
    while (!IsEmpty(s))
    {
        Pop(s, &result);
        printf("%c\n", result);
    }
}

 最终效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值