|
|
知识路径: > 嵌入式系统软件基础知识 > 嵌入式系统程序设计 > 嵌入式程序设计语言 > 嵌入式C/C++程序设计要求 > C程序设计基础 > 栈与队列 >
|
|
被考次数:6次
|
|
被考频率:
中频率
|
|
总体答错率:
54%
|
|
知识难度系数:
|
|
考试要求:
掌握
|
|
相关知识点:2个
|
|
|
|
栈是只能通过访问它的一端来实现数据存储和检索的一种线性数据结构。换句话说,栈的修改是按先进后出的原则进行的。因此,栈又称为先进后出(FILO,或后进先出)的线性表。在栈中,进行插入和删除操作的一端称为栈顶(top),相应地,另一端称为栈底(bottom)。不含数据元素的栈称为空栈。
|
|
|
|
(1)初始化栈initStack(S):创建一个空栈S。
|
|
|
(2)判栈空isEmpty(S):当栈S为空栈时返回“真”,否则返回“假”。
|
|
|
(3)入栈push(S,x):将元素x加入栈顶,并更新栈顶指针。
|
|
|
(4)出栈pop(S):将栈顶元素从栈中删除,并更新栈顶指针。
|
|
|
(5)读栈顶元素top(S):返回栈顶元素的值,但不修改栈顶指针。
|
|
|
可以用一维数组作为栈的存储空间,同时设置指针top指示栈顶元素的位置。在这种存储方式下,需要预先定义或申请栈的存储空间,也就是说栈空间的容量是有限的。因此一个元素入栈时,需要判断是否栈满,若栈满(即栈空间中没有空闲单元),则元素入栈会发生上溢现象。
|
|
|
用链表作为存储结构的栈称为链栈。由于栈中元素的插入和删除仅在栈顶一端进行,因此不必另外设置头指针,链表的头指针就是栈顶指针。链栈的表示如下图所示,其类型定义如下:
|
|
|
|
|
|
以栈中元素类型为整型为例,实现栈基本运算的函数定义如下。
|
|
|
|
|
|
|
|
|
|
|
|
|
|