zoukankan      html  css  js  c++  java
  • 数据结构-王道2017-第2章 线性表-2.3 综合题

    单项选择题

    1.链式存储用指针表示逻辑结构,而指针的设置是任意的,故可以很方便地表示各种逻辑结构。顺序存储只能用物理上的邻接关系来表示逻辑结构。

    2.静态链表需要分配较大的连续空间,插入和删除不需要移动元素。若用单链表来表示队列,则应该选用带尾指针的循环链表,因为队列总是在队尾插入,队首删除,所以尾指针对头节点和尾节点的时间复杂度都为O(1);

    3.在一个长度为n的带头节点的单链表h上,设有尾指针r,则执行删除单链表中最后一个元素操作与链表的表长有关,因为要置被删除结点的前驱结点的next指针为空。

    4.在带头节点的链表中,head指向头节点,不带头节点时,head指向第一个元素。

    5.带头节点的双循环链表L为空的条件是 "L->prior==L&&L->next==L",即判空的条件是头结点(头指针)的prior和next域都指向它自身。

    综合应用题

    1.设计一个递归算法,删除不带头节点的单链表L中所有值为x的结点。

    void delx(LinkList& L, ElemType x) {
    
        if (L == NULL)
            return;
    
        if (L->data == x) {
            LNode *p = L;
            L = L->next;
            free(p);
            delx(L, x);
        }
        else {
            delx(L->next, x);
        }
    }

    2.在带头结点的单链表中,删除所有值为x的节点,并释放其空间,假设值为x的结点不唯一

    void delx2(LinkList &L, ElemType x) {
        LNode *p = L->next;
        LNode *pre = L;
        while (p) {
            if (p->data == x) {
                pre->next = p->next;
                free(p);
                p = pre->next;
            }
            else {
                pre = p;
                p = p->next;
            }
        }
    }

    3.设L为带头节点的单链表,编写算法实现从尾到头反向输出每个节点的值(王道书上的答案只适用于不带头节点的单链表,因此是错误的)

    void printReverse(LinkList &L) {
    
        if (L->next == NULL)
            return;
        printReverse(L->next);
        printf("%d ", L->next->data);
        
    }

    4.在带头结点的单链表L中删除一个最小值的高效算法(假设最小值是唯一的)

    //4.在带头结点的单链表L中删除一个最小值的高效算法(假设最小值是唯一的)
    void delMin( LinkList & L) {
        LNode *p = L->next,*pre = L;
        ElemType mi;
        if(p)   mi = p->data;
        while (p) {
            if (p->next) {
                if (mi > p->next->data) {
                    pre = p;
                    mi = p->next->data;    
                }    
                p = p->next;
            }
            else {
                break;
            }
        }
    
        LNode *temp = pre->next;   //最小值
        if (temp != NULL) {
            pre->next = temp->next;
            free(temp);
        }
    }
  • 相关阅读:
    [置顶] 新修改ADB,支持Android 4.2 系统 ,全部中文命令,手机屏幕截图等等
    归并排序
    Sciter/HTMLayout内存占用评测
    ASP.NET面试题总结
    uva 1356 Bridge ( 辛普森积分 )
    在没备份undo的情况下,undo丢失,重启数据库报ORA-01157错误
    以天徒龙记
    struts-config.xml 文件:
    struts.xml文件:
    web.xml文件:
  • 原文地址:https://www.cnblogs.com/--CYH--/p/6544556.html
Copyright © 2011-2022 走看看