• 2021-04-14
    设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数,其值可以和表中的元素相同,也可以不同 )
  • 分别查找第一个值>mink的结点和第一个值 ≥maxk的结点,再修改指针,删除值大于mink且小于maxk的所有元素。
    [算法描述]void delete(LinkList &L, int mink, int maxk) {
    p=L->next; //首元结点while (p && p->data<=mink)
    { pre=p; p=p->next; } //查找第一个值>mink的结点if (p)
    {while (p && p->datanext;// 查找第一个值 ≥maxk的结点
    q=pre->next; pre->next=p; // 修改指针while (q!=p)
    { s=q->next; delete q; q=s; } // 释放结点空间}//if
    }

    内容

    • 0

      有两个递增有序顺序表A和B,分别含有n和m个整数元素(最大的元素不超过32767),假设这n+m个元素均不相同。设计一个尽可能高效的算法求这n+m个元素中第k小的元素。如果参数k错误,算法返回0;否则算法返回1,并且用参数e表示求出的第k小的元素。

    • 1

      若有一个无序顺序表R1和递增有序顺序表R2,它们均含有n个元素,且可能存在相同关键字的元素。设计两个算法分别输出R1和R2中第一个关键字为k的元素位置,并分析成功查找的平均查找长度。

    • 2

      1.假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原表(即A表和B表)的结点空间构造C表。

    • 3

      【其它】对于有 n ( n ≥ 1 )个节点的循环单链表 L ,假设所有节点值是递增有序的,设计一个算法就地删除所有值重复的节点

    • 4

      已知有两个递增有序顺序表A和B,设计一个算法由顺序表A和B的所有公共元素产生一个顺序表C。