queue什么意思怎么读(AuTo是啥意思)

2025-01-2907:44:25综合资讯0

栈(Stack)乃一特定数据结构,仅允在其一端施行插入或删除操作。

  • 线性表之基本操作
    • InitStack(S):初始化栈,构造一空栈S并分配内存空间。
    • DestroyStack(S):销毁栈,释放栈S所占用的内存空间。
    • Push(S, x):进栈,若栈未满,则将x加入使其成为新栈顶。
    • Pop(S, x):出栈,若栈非空,则弹出栈顶元素并使x接收之。
    • GetTop(S, x):读栈顶元素,若栈非空,则x接收栈顶元素。
    • StackEmpty(S):判断栈是否为空,若为空则返回真,否则返回假。

此乃逻辑结构之一,拥有两种存储方式。其中之一为顺序存储,即利用一组地址连续的存储单元存放自栈底至栈顶的数据元素(如数组),并辅以一个指向栈顶元素的指针(top指针)。

此top指针有两种表示法:一是指向栈顶元素本身,空栈时top为-1;另一种是栈顶指针top指向栈顶元素的下一个位置,空栈时top指向0。以下代码采用第一种表示法。

顺序存储之不足在于其大小固定,当元素不足时会造成空间浪费。然共享栈可提高空间利用率,两栈共享同一片空间,自两端向中间增长。

另一存储方式则为链式存储,即链栈,通常以单链表实现之。

无论入栈或出栈操作,皆在表头进行。入栈即以头插法插入新节点,出栈则删除表头节点。采用带头结点与不带头结点之方式略有差异。

(带头节点 vs 不带头节点)

队列(Queue)为另一线性表结构,仅允一端入队,另一端出队。

  • 队列基本操作
    • InitQueue(Q):初始化队列,构造一空队列Q。
    • DestroyQueue(Q):销毁队列并释放其内存空间。
    • EnQueue(Q, x):若队列未满,将x加入使之成为新队尾。
    • DeQueue(Q, x):若队列非空,则删除队头元素并以x接收之。
    • GetHead(Q, x):若队列非空,则队头元素赋值给x。
    • QueueEmpty(Q):判断队列是否为空,若为空则返回真。

队有着两种存储结构:顺序存储及非顺序存储。以数组为代表的顺序存储设有队头及队尾指针。非顺序存储可通过特定机制判断队空及队满状态。

对于双端队列(Deque),其两端皆可进行入队及出队操作。根据限制条件,又可分为输出受限及输入受限的双端队列。

(括号匹配问题)

(中缀表达式计算)