线性结构——链式栈的实现

LinkStack.h

#ifndef SHUJUJIEGOU_PRATICE_LINKSTACK_H
#define SHUJUJIEGOU_PRATICE_LINKSTACK_H
typedef int element;

typedef struct stack_node{
    element data;
    struct stack_node *next;
}StackNode;

typedef struct {
    StackNode *top;
    int count;
}LinkStack;
//初始化
void initLinkStack(LinkStack *stack);
//压栈,出栈
int pushLinkStack(LinkStack *stack,element value);
int popLinkStack(LinkStack * stack,element* value);
//获得栈顶元素
int gettopLinkStack(LinkStack *stack);

#endif //SHUJUJIEGOU_PRATICE_LINKSTACK_H

LinkStack.c

#include "LinkStack.h"
#include <cstdlib>
#include <stdio.h>
void initLinkStack(LinkStack *stack) {
    stack->top = NULL;
    stack->count=0;
}
int pushLinkStack(LinkStack *stack,element value) {
StackNode * newNode = (StackNode *)malloc(sizeof(StackNode));
    if(newNode==NULL)
        return 0;
    newNode->data = value;
    newNode->next = stack->top;
    stack->top = newNode;
    stack->count++;
    return 1;
}
int popLinkStack(LinkStack * stack,element* top) {
    if(stack->top==NULL) {
        printf("Stack is empty\n");
        return 0;
    }
    StackNode * temp=stack->top;
    *top=temp->data;
    stack->top=stack->top->next;
    stack->count--;
    free(temp);
    return 1;
}
int gettopLinkStack(LinkStack *stack) {
    if(stack->top==NULL)
        return 0;
    return stack->top->data;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值