简答题

假设以不带头结点的循环链表表示队列,并且只设一个指针指向队尾结点,但不设头指针。试设计相应的入队和出队的算法。

正确答案

出队操作是在循环链表的头部进行,相当于删除开始结点,而入队操作是在循环链表的尾部进行,相当于在终端结点之后插入一个结点。由于循环链表不带头结点,需要处理空表的特殊情况。
入队算法如下:

出队算法如下:

答案解析

相似试题
  • 假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的队列初始化、入队列何处队列的算法。

    简答题查看答案

  • 设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(不设头指针),试编写相应的入队列、出队列算法。

    简答题查看答案

  • 头指针为head的带头结点的单向循环链表,p所指向尾结点,要使该链表成为不带头结点的单向循环链表, 可执行head=head->nex;和()。

    单选题查看答案

  • 带头结点的双向循环链表L为空表的条件是()。

    填空题查看答案

  • 设以带头结点的双向循环链表表示的线性表L=(a1,a2,…,an)。试写一时间复杂度O(n)的算法,将L改造为L=(a1,a3,…,an,…,a4,a2)。

    简答题查看答案

  • 稀疏多项式采用的循环链表存储结构LinkedPoly定义为: 试编写算法,将一个用循环链表表示的稀疏多项式分解成两个多项式,使这两个多项式中各自仅含奇次项或偶次项,并要求利用原链表中的结点空间构成这两个链表。

    简答题查看答案

  • 在一个带头结点的双向循环链表中,若要在p所指向的结点之前插入一个新结点,则需要相继修改()个指针域的值。

    单选题查看答案

  • 假设在长度大于1的循环链表中,即无头结点也无头指针,s为指向链表中某个结点的指针,试编写算法删除结点s的前趋结点。

    简答题查看答案

  • 编写算法,将一个头指针为head不带头结点的单链表改造为一个单向循环链表,并分析算法的时间复杂度。

    简答题查看答案