05 C语言实现栈的顺序存储

#include "stdlib.h"
#include "stdio.h"

#define N 32

typedef int datatype_t;
typedef struct {
    datatype_t data[N];
    int top;
} seqstack_t;

//创建一个空栈
seqstack_t *seqstack_create() {
    seqstack_t *stack = (seqstack_t *) malloc(sizeof(seqstack_t));
    if (stack == NULL) {
        exit(0);
    }

    stack->top = 0;
    return stack;
}

int seqstack_full(seqstack_t *stack) {
    return stack->top == N ? 1 : 0;
}

int seqstack_push(seqstack_t *stack, datatype_t value) {
    if (seqstack_full(stack)) {
        return -1;
    }

    stack->data[stack->top] = value;
    stack->top++;
    return 1;
}

int seqstack_empty(seqstack_t *stack) {
    return stack->top == 0 ? 1 : 0;
}

datatype_t seqstack_pop(seqstack_t *stack) {
    if (seqstack_empty(stack)) {
        return -1;
    }

    datatype_t value = stack->data[stack->top - 1];
    stack->top--;
    return value;
}

void seqstack_show(seqstack_t *stack) {
    for (int i = 0; i < stack->top; i++) {
        printf("%d ", stack->data[i]);
    }

    printf("\n");
}

int main() {
    seqstack_t *stack = seqstack_create();
    seqstack_push(stack, 11);
    seqstack_push(stack, 12);
    seqstack_push(stack, 13);
    seqstack_push(stack, 14);
    seqstack_show(stack);
    datatype_t value = seqstack_pop(stack);
    printf("出栈值为 %d \n", value);
    seqstack_show(stack);
    return 0;
}

运行效果

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是用C语言实现顺序存储的示例代码: ``` #include <stdio.h> #include <stdlib.h> #define MAX_SIZE 100 // 定义的最大长度 typedef struct { int data[MAX_SIZE]; // 存储数据的数组 int top; // 顶指针 } Stack; // 初始化 void initStack(Stack *s) { s->top = -1; } // 判断是否为空 int isEmpty(Stack *s) { return s->top == -1; } // 判断是否已满 int isFull(Stack *s) { return s->top == MAX_SIZE - 1; } // 入操作 void push(Stack *s, int x) { if (isFull(s)) { printf("已满,无法入!\n"); return; } s->data[++s->top] = x; } // 出操作 int pop(Stack *s) { if (isEmpty(s)) { printf("已空,无法出!\n"); return -1; } return s->data[s->top--]; } // 获取顶元素 int getTop(Stack *s) { if (isEmpty(s)) { printf("已空,无法获取顶元素!\n"); return -1; } return s->data[s->top]; } int main() { Stack s; initStack(&s); // 初始化 push(&s, 1); push(&s, 2); push(&s, 3); printf("顶元素为:%d\n", getTop(&s)); // 输出顶元素 while (!isEmpty(&s)) { printf("%d ", pop(&s)); // 依次弹出中元素 } printf("\n"); return 0; } ``` 在以上代码中,我们定义了一个结构体 `Stack` 表示,其中包括一个存储数据的数组 `data` 和一个指示顶位置的变量 `top`。然后,我们通过各种操作函数实现的各种功能,如初始化、判断是否为空、判断是否已满、入、出、获取顶元素等。最后,在 `main()` 函数中,我们演示了如何使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值