一起答

自考计算机网络数据结构模拟试卷四

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 假设以二叉链表作为二叉树的存储结构,其结点结构为:

    照如下给定的函数f34的原型,编写求二叉树中叶子结点所在的最小层次与最大层次的函数。其中,参数 level为函数执行过程中T当前所指结点的层次,其初值为1;lmin与max分别为叶子结点的最小层次与最大层次,它们的初值均为0void f34(BinTree T, int level, int *Imin, int *Imax);

  2. 二叉排序树的存储结构定义为以下类型

    typedef int KeyType;

    typedef struct node{

    KeyType key;//关键字项

    InfoType otherinfo;//其他数据项

    struct node Ichild, rchild//左右孩子指针

    BSTNode, *BSTree;

    阅读算法f33,并回答问题:

    (1)对如题图所示的二叉排序树T,写出33(T,8)返回的指针所指结点的关键字

    (2)在哪些情况下算法f33返回空指针?

    (3)简述算法f33的功能。

    BSTNode f333(BSTree, KeyType)

    {BSTNode *p:

    if (T==NULL) return NULL:

    p=f33(T->lchild, x);

    if (p!-NULL) return pi

    if (T->key >x) return T:

    return f33(T->rchild, x);

    }

    (1)

    (2)

    (3)

  3. 下列程序判断字符串s是否对称,对称则返回1,否则返回0;如f("abba")返回1,f(abab")返回0;在空缺处填写相应的语句。

    int f((1))

    while (sj]) (2)

    for(j-; i

    return (3)

    }

    (1)

    (2)

    (3)

  4. (1)对于下列图G的邻接矩阵,写出函数调用f32(&G,3)的返回值

    int f32(MGraph G, int i)

    {int d=,j;

    for(j=0,j++)

    {if(G->edges[]) d++;

    if(G->edges[]) d++;

    }

    return d;

    }

    (1)

    (2)

    (3)

    (2)简述函数f32的功能。

    (3)写出函数f32的时间复杂度

  5. 算法f31的功能是清空带头结点的链队列Q请在空缺处填入合适的内容,使其成为一个完整的算法。

    typedef struct node{

    DataType data;

    struct node next;

    } QueueNode;

    typedef struct{

    QueueNode *front;//队头指针

    QueueNode rear;//队尾指针

    }LinkQueue;

    void f31(LinkQueue*Q)

    {

    QueueNode *P,*

    P=(1)   

    while(p! =NULL)

    s=p

    p=p->next;

    free(s):

    }

    (2)  =NULLI

    Q->rear=(3)  

    }

    (1)

    (2)

    (3)

  6. 试举一个数据结构的例子,叙述其逻辑结构存储结构两方面的内容

  7. 由字符集{s,t,ae,i}及其在电文中出现的频度构建的哈夫曼树如题27图所示。已知某段电文的哈夫曼编码为1110000100,请根据该哈夫曼树进行译码,写出原来的电文。

  8. 图G=(V,E),其中:V={0,1,2,3,4,5},E={<0,1>,<0,2>,<1,4>,<2,5>,<5,4><4,3>,<5,3>试写出图G中顶点的所有拓扑排序。

  9. 对序列(48,37,63,96,22,31,50,55,11进行堆排序,写出构建的初始(大根)堆及前两趟重建堆之后的序列状态。

  10. 队列只允许在表的一端进行插入,而在另一端进行删除,允许删除的一端称为( )允许插入的一端称为( )

  11. 下面程序段的时间复杂度是( )i=1;j=0;while (i+j<=n)if (i>j)j++elsei++;

  12. 一个算法的( )是该算法的时间耗费,它是该算法所求解问题规模n的函数。

  13. 元素在物理位置上( )相邻20.当三角矩阵的常数为0时,n阶三角矩阵的非零元素个数为

  14. 在二叉树的第i层上至多有( )个结点(i≥1)

  15. 顺序栈中,栈空时再做退栈运算将产生溢出,简称( )

  16. 在用p指针访问单链表时,判断不是访问结束的条件是( )

  17. 在一棵度为3的树中,度为2的结点个数是1,度为0的结点个数是6,则度为3的结点个数是( )

  18. 若两个关键字通过散列函数映射到同一个散列地址,这种现象称为( )

  19. ( )是指抽象数据的组织和与之相关的操作。

  20. 已知一个长度为19的有序表,按二分查找法对该表进行查找,在表内各元素等概率情况下,查找成功的平均查找长度为【】

    • A.68/19
    • B.69/19
    • C.70/19
    • D.71/19
  21. 下面几个符号串编码集合中,不是前级编码的是【】

    • A.{0,10,110,111
    • B.{11,10,001,101,0001
    • C.{00,010,0110,1000
    • D.{0,10,110,111
  22. 顺序栈s中top为顶指针,指向栈顶元素所在的位置,elem为存放的数组,则元素e进栈操作的主要语句为【】

    • A.s. elem[top]-e; s. top-s. top+1;
    • B.s. elem[top+1]-e;s. top-s. top+;
    • C.s. top-s,top+1;s. elem[top+1]-e;
    • D.s. top=s, top+1;s. elem[top]=e;
  23. 非空带头结点的单循环链表的尾结点p满足【】

    • A.p->next==head
    • B.p->next==NULL
    • C.p==NULL
    • D.p==head
  24. 设树T的度为4,其中度为1、2、3和4的结点个数分别为4、2、1和1,则T中的叶子结点的个数为【】

    • A.5
    • B.6
    • C.7
    • D.8
  25. 与单链表相比,双向链表的优点之一是【】

    • A.插入、删除操作更简单
    • B.可以进行随机访问
    • C.可以省略表头指针或表尾指针
    • D.前后访问相邻结点更灵活
  26. 一个有n个顶点的无向连通图,其边的个数至少为【】

    • A.n-1
    • B.n
    • C.n+1
    • D.nlogan
  27. 广义表A=((a,(b,c),d)的长度为【】

    • A.2
    • B.3
    • C.4
    • D.5
  28. 用普里姆算法和克鲁斯卡尔算法构造的最小生成树,所得到的最小生成树【】

    • A.是相同的
    • B.是不同的
    • C.可能相同,可能不同
    • D.无法比较
  29. 若一组记录的关键字序列为(46,79,56,38,4084),则利用堆排序的方法建立的初始堆(大根堆是【】

    • A.84,79,56,38,40,46
    • B.79,46,56,38,40,84
    • C.84,79,56,46,40,38
    • D.84,56,79,40,46,38
  30. 链栈与顺序栈相比,比较明显的优点是【】

    • A.插入操作更加方便
    • B.删除操作更加方便
    • C.存取操作更加方便
    • D.不会出现空间浪费问题
  31. 已知一棵含50个结点的二叉树中只有一个叶子结点,则该树中度为1的结点个数为【】

    • A.0
    • B.1
    • C.48
    • D.49
  32. 对于一个具有6个顶点和6条边的无向图,若采用邻接表表示,则表头向量的大小为【】

    • A.12
    • B.5
    • C.7
    • D.6
  33. 堆排序的平均执行时间和需附加的存储结点分别是【】

    • A.(n2)和O(1)
    • B.o(nlog2n)和O(1)
    • C.(nlog2n)和O(n)
    • D.(n2)和(n)
  34. 若一棵二叉树具有10个度为2的结点,5个度为1的结点则叶子结点个数为【】

    • A.9
    • B.11
    • C.15
    • D.还确定