严蔚敏数据结构:栈与队列详解及C语言实现

需积分: 10 1 下载量 185 浏览量 更新于2024-07-22 1 收藏 337KB DOC 举报
本文档主要介绍了数据结构中的两种基本线性结构:栈和队列,以及它们在计算机程序中的应用。栈是一种具有后进先出(LIFO, Last In First Out)特性的数据结构,而队列则遵循先进先出(FIFO, First In First Out)的原则。文档的核心内容围绕栈的两种存储表示形式展开: 1. **顺序存储表示(Sequential Storage Structure)**: - 这部分展示了如何使用数组实现栈,定义了一个名为`SqStack`的结构体,包含基础数据成员如栈底指针`base`、栈顶指针`top`和当前已分配的存储空间大小`stacksize`。初始化栈函数`InitStack`负责分配初始存储空间,如果分配失败则返回`OVERFLOW`错误。 - `GetTop`函数用于获取栈顶元素,如果栈为空则返回`ERROR`。 - `Push`函数是向栈中添加元素的操作,当栈满时,会动态扩展栈的空间,通过`realloc`函数进行内存重新分配。 2. **链式存储表示(Linked Storage Structure)**: - 文档中虽然没有给出链式存储栈的具体实现,但可以推测这部分可能涉及使用链表来实现栈,这样可以在不预知栈中元素数量的情况下动态地增加存储容量,避免了顺序存储可能遇到的存储空间不足问题。 对于栈的应用,它广泛应用于计算机科学的许多场景中,例如表达式求值、递归调用栈、括号匹配等。队列则常用于任务调度、消息传递系统、广度优先搜索算法等,如浏览器的加载历史、操作系统中的进程调度等。 总结来说,这份文档是学习数据结构基础的重要参考资料,提供了栈和队列这两种常见数据结构的底层实现细节,对于理解这两种数据结构的工作原理和编程实现有着重要的指导意义。通过阅读和实践这些代码,读者可以加深对数据结构的理解,提升编程技能。