上一篇
在学习 C语言数据结构 的过程中,栈(Stack) 是一个非常基础且重要的概念。栈遵循“后进先出”(LIFO, Last In First Out)的原则,广泛应用于表达式求值、括号匹配、函数调用等场景。本文将通过一个完整的 C语言栈应用 实例,帮助编程小白轻松理解并动手实现一个栈。
栈是一种线性数据结构,只允许在一端进行插入和删除操作,这一端称为“栈顶”。就像一摞盘子,你只能从最上面拿走或放上盘子。
我们可以使用数组或链表来实现栈。这里我们采用更简单直观的数组方式。
#define MAX_SIZE 100typedef struct { int data[MAX_SIZE]; int top;} Stack; 这里我们定义了一个最大容量为100的栈,top 表示栈顶元素的索引(初始为 -1 表示空栈)。
我们需要实现以下功能:
#include <stdio.h>#include <stdlib.h>#define MAX_SIZE 100typedef struct { int data[MAX_SIZE]; int top;} Stack;// 初始化栈void initStack(Stack* s) { s->top = -1;}// 判断栈是否为空int isEmpty(Stack* s) { return s->top == -1;}// 入栈void push(Stack* s, int value) { if (s->top >= MAX_SIZE - 1) { printf("栈已满!\n"); return; } s->data[++(s->top)] = value;}// 出栈int pop(Stack* s) { if (isEmpty(s)) { printf("栈为空!\n"); exit(1); } return s->data[(s->top)--];}// 查看栈顶元素int peek(Stack* s) { if (isEmpty(s)) { printf("栈为空!\n"); exit(1); } return s->data[s->top];} int main() { Stack s; initStack(&s); push(&s, 10); push(&s, 20); push(&s, 30); printf("栈顶元素是:%d\n", peek(&s)); // 输出 30 printf("出栈元素:%d\n", pop(&s)); // 输出 30 printf("出栈元素:%d\n", pop(&s)); // 输出 20 printf("当前栈是否为空?%s\n", isEmpty(&s) ? "是" : "否"); // 否 return 0;} 栈在 C语言编程教程 中常用于解决以下问题:
通过本教程,你已经掌握了如何在 C 语言中手动实现一个栈,并了解了其基本操作和应用场景。无论你是初学者还是想巩固基础,这个 C语言栈应用 实例都能帮助你加深对栈的理解。
记住,多动手写代码是掌握 C语言数据结构 的关键!尝试扩展这个栈,比如支持动态扩容,或用它来实现括号匹配功能吧。
本文由主机测评网于2025-12-17发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025129285.html