C语言实现栈的基本操作:入栈、出栈、查看栈顶

需积分: 10 3 下载量 170 浏览量 更新于2024-09-16 收藏 2KB TXT 举报
"这篇文章主要介绍了如何使用C语言实现栈的基本操作,包括初始化栈、释放栈、入栈、出栈和查看栈顶元素等操作。" 在计算机科学中,栈是一种非常重要的数据结构,它遵循“后进先出”(Last In, First Out,简称LIFO)的原则。栈在许多算法和程序设计中都有广泛应用,如括号匹配、表达式求值、深度优先搜索等。本示例代码使用C语言实现了顺序栈(也称为静态栈),即在内存中预先分配一块连续空间来存储栈元素。 首先,定义了一个名为`SqStack`的结构体,它包含三个成员: 1. `base`:指向栈底的指针。 2. `top`:指向栈顶的指针。 3. `stacksize`:栈的当前大小,即已分配的内存容量。 `InitStack`函数用于初始化栈。它使用`malloc`动态分配`STACK_INIT_SIZE`大小的内存,并将`base`和`top`指针设置为分配内存的起始位置,同时设置`stacksize`。如果分配失败,程序将输出错误信息并退出。 `FreeStack`函数用于释放栈所占用的内存。它调用`free`函数释放`base`指向的内存块,并打印一条确认消息。 `Push`函数用于将一个字符压入栈中。首先检查栈是否已满,如果满了,则使用`realloc`函数扩展栈的大小,增加`STACKINCREMENT`个单位。扩展成功后,将字符存入栈顶,并更新`top`指针。最后输出压栈成功的提示。 `GetTop`函数返回栈顶元素,但不移除它。如果栈为空,返回0;否则,返回`top-1`位置的字符。 `Pop`函数执行出栈操作,即将栈顶元素弹出。同样,如果栈为空,返回0。否则,返回栈顶元素(`top-1`位置的字符),然后将`top`指针下移一位表示栈顶元素已被移除。 此外,`Menu`函数提供了一个简单的用户界面,让用户选择进行哪种栈操作。这些基本操作的实现展示了C语言处理数据结构和内存管理的方式,对于理解栈的工作原理和C语言编程有很好的学习价值。通过这个例子,开发者可以进一步拓展实现其他复杂的数据结构和算法。