栈
- 后进先出

stack.h 文件
#ifndef __STACK_H#define __STACK_Htypedef struct {int *arr;int cap;int top;}stack_t;extern void stack_init(stack_t *stack, int cap);extern void stack_destroy(stack_t *stack);extern int stack_full(stack_t *stack);extern int stack_empty(stack_t *stack);extern int stack_push(stack_t *stack, int data);#endif
stack.c文件
#include <stdlib.h>#include "stack.h"typedef struct {int *arr;int cap;int top;}stack_t;// stack_init 初始化栈void stack_init(stack_t *stack, int cap){stack->arr = (int *)malloc(cap * sizeof(int));stack->cap = cap;stack->top = 0;}// stack_destroy 释放内存void stack_destroy(stack_t *stack){free(stack->arr);stack->cap = 0;stack->top = 0;}// stack_full 检测栈是否已满 1 已满 0未满int stack_full(stack_t *stack){return stack->top >= stack->cap;}// stack_empty 检测栈是否已满int stack_empty(stack_t *stack){return !stack->top;}// stack_push 压栈, return 压栈成功 0, 失败 1int stack_push(stack_t *stack, int data){if (stack_full(stack))return 0;stack->arr[top++] = data;return 1;}
main.c文件
#include <stdio.h>#include "stack.h"// stack_pop 出栈, 出栈成功 err=0 否则 err = 1int stack_pop(stack_t *stack, int *err){if(stack_empty(stack)){*err = 1;return 0;}*err = 0;return stack->arr[--top];}
队列
- 先进先出
单链表
- 内存不lian
