C 堆栈

#pragma once 
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
//定义一个栈的里面的元素的结构体
typedef struct _element{
    int index;
    char name[8];
    struct _element* next;

}ELEMENT;

//定义一个栈的结构体
typedef struct _stack{
    int size;
    ELEMENT* top;
}STACK;

int push(STACK* stack,ELEMENT element);
int pop(STACK* stack);
ELEMENT* _pop(STACK* stack);
int size(STACK* stack);
int empty(STACK* stack);
ELEMENT* top(STACK stack);
void clear(STACK* stack);
void show(STACK stack);
#include "stach.h"
//入栈
int push(STACK* stack, ELEMENT element){
    ELEMENT* elements = (ELEMENT*)malloc(sizeof(ELEMENT));
    memset(elements, 0, sizeof(ELEMENT));

    elements->index = element.index;
    strcpy(elements->name, element.name);

    elements->next = stack->top;
    stack->top = elements;
    stack->size++;
    return 1;
}
//出栈(返回值表示为成功或者不成功)
int pop(STACK* stack){
    ELEMENT* p = stack->top;
    if (p != NULL)
    {
        stack->top = stack->top->next;
        stack->size--;
        free(p);
        return 1;
    }
    return 0;
}
//出栈(返回值表示出栈元素的指针)
ELEMENT* _pop(STACK* stack){
    ELEMENT* p = stack->top;
    if (p != NULL)
    {
        stack->top = stack->top->next;
        stack->size--;
        return p;
    }
    return NULL;
}
//栈内元素数
int size(STACK stack){
    return stack.size;
}
//栈是否为空
int empty(STACK* stack){
    return stack->top == NULL ? 1 : 0;
}
//栈的头结点
ELEMENT* top(STACK stack){
    return stack.top;
}
//清空栈
void clear(STACK* stack){
    for (; pop(stack) != 0;);
}
//打印栈
void show(STACK stack){
    for (ELEMENT* p = stack.top; p != NULL; p = p->next){
        printf("%d %s\n",p->index,p->name);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值