• 2022-06-03
    假设在长度大于[tex=0.5x1.0]oYgVDn+QZqcDCRxqEZwM2A==[/tex]的循环单链表中,既无头节点指针也无首数据节点指针。[tex=0.5x0.786]ICKY+F5VdoSQrRn/wUUOyw==[/tex]为指向链表中某个节点的指针,试编写算法删除节点[tex=1.0x0.786]yaoihnBqKeopk1SSk/C8rw==[/tex]的前驱节点。
  • 解:先找到[tex=1.071x0.786]XZhXmCz6wGwnKmSfIuYPnw==[/tex]的前驱节点[tex=1.0x1.0]xeR2IUoXVtWUncnEa/QE5w==[/tex],以[tex=1.0x1.0]xeR2IUoXVtWUncnEa/QE5w==[/tex]节点的前驱节点[tex=1.0x1.0]xeR2IUoXVtWUncnEa/QE5w==[/tex],然后删除[tex=1.0x1.0]xeR2IUoXVtWUncnEa/QE5w==[/tex]节点。对应的算法如下:void Dels( LinkList * s){    LinkList  p = s,  q;    if (p-> next - > next == p)    //只有两个节点的情况.    {    q=p-> next;        p-> next - pi;    }    else    //有两个以上的节点,找到要删除的节点*q以*p作为*α的前驱    {    while (p-> next ->next!= s)        {    p-p- > next;            q=p-> next;        }            p=>next = s;    //删除*α节点    }    free(q);}

    举一反三

    内容

    • 0

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

    • 1

      任意一个有[tex=0.643x0.786]SBMIs+VUk7//BOpfqlQl0w==[/tex]个节点的二叉树,已知它有[tex=0.929x0.786]D9maNLyVVGrC3QbL9jjRWg==[/tex]个叶子节点,试证明非叶子节点中有[tex=3.0x1.357]6wOxI7kRdeTWx9DEyQ5iyA==[/tex]个节点的度为[tex=0.5x1.0]8C7DKsr6nhrfCdsmGxO88g==[/tex],其余的节点的度为[tex=0.5x1.0]oYgVDn+QZqcDCRxqEZwM2A==[/tex]。

    • 2

      假设长度大于1的循环单链表中,既无头结点也无头指针,p为指向该链表中某一结点的指针,编写一个函数删除该结点的前驱结点

    • 3

      以L为头节点指针,给出单链表、双链表、循环单链表和循环双链表中,p所指节点为尾节点的条件。

    • 4

      在带头节点[tex=1.214x1.0]yIvQgOYQoCSO1ERc0Dhmiw==[/tex]的循环单链表中,至少有一个节点的条件是, 未知类型:{'options': ['[tex=8.714x1.143]8pOHlqLsxti8iDjPxRX3tPgYTp+dAFPc66D05V1EW3Q=[/tex]', '[tex=6.286x1.143]8pOHlqLsxti8iDjPxRX3tMI0vBgf7a1FFrLzL0pPJhc=[/tex]', '[tex=4.786x1.214]wUURNXUtEMhX/1VDoKcVLQ==[/tex]', '[tex=6.857x1.214]FWUZIlCgKEOiuLlDIftHkuG83l2hOB3yQ7xwT4b567s=[/tex]'], 'type': 102}