更多“如果要在链表中删除一个元素,则只要将要删除的元素的()一个元素的指针调整为指向要删除的元素的下一个元素。”相关问题
  • 第1题:

    如果对线性表的运算只有4种,即删除第一个元素,删除最后一个元素,在第一个元素面前插入新元素,在最后一个元素的后面插入新元素,则最好使用( )。

    A.只有表尾指针没有表头指针的循环单链表

    B.只有表尾指针没有表头指针的非循环双链表

    C.只有表头指针没有表尾指针的循环双链表

    D.既有表头指针也有表尾指针的循环单链表


    正确答案:C

  • 第2题:

    在一个长度为n(n>1)的带头结点的单链表head上,另设有尾指针r(指向尾结点),执行()操作与链表的长度有关。

    A.删除单链表中的第一个元素

    B.删除单链表中的尾结点

    C.在单链表的第一个元素前插入一个新结点

    D.在单链表的最后一个元素后插入一个新结点


    参考答案:B

  • 第3题:

    若某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则 采用( )存储方式最节省运算时间。A.单链表B.双链表C.单循环链表D.带头结点的双循环链表


    正确答案:D
    带头结点的循环链表可以很方便地找到尾结点,从而节省查找的时间。

  • 第4题:

    11 一个链表的操作,注意代码的健壮和安全性。要求:

    (1)增加一个元素;

    (2)获得头元素;

    (3)弹出头元素(获得值并删除)。


    正确答案:
     

  • 第5题:

    阅读以下说明和 C 代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 函数 GetListElemPtr(LinkList L,int i)的功能是查找含头结点单链表的第i个元素。若找到,则返回指向该结点的指针,否则返回空指针。 函数DelListElem(LinkList L,int i,ElemType *e) 的功能是删除含头结点单链表的第 i个元素结点,若成功则返回 SUCCESS ,并由参数e 带回被删除元素的值,否则返回ERROR 。 例如,某含头结点单链表 L 如图 4-1 (a) 所示,删除第 3 个元素结点后的单链表如 图 4-1 (b) 所示。图4-1

    define SUCCESS 0 define ERROR -1 typedef int Status; typedef int ElemType; 链表的结点类型定义如下: typedef struct Node{ ElemType data; struct Node *next; }Node ,*LinkList; 【C 代码】 LinkList GetListElemPtr(LinkList L ,int i) { /* L是含头结点的单链表的头指针,在该单链表中查找第i个元素结点: 若找到,则返回该元素结点的指针,否则返回NULL */ LinkList p; int k; /*用于元素结点计数*/ if (i<1 ∣∣ !L ∣∣ !L->next) return NULL; k = 1; P = L->next; / *令p指向第1个元素所在结点*/ while (p && (1) ) { /*查找第i个元素所在结点*/ (2) ; ++k; } return p; } Status DelListElem(LinkList L ,int i ,ElemType *e) { /*在含头结点的单链表L中,删除第i个元素,并由e带回其值*/ LinkList p,q; /*令p指向第i个元素的前驱结点*/ if (i==1) (3) ; else p = GetListElemPtr(L ,i-1); if (!p ∣∣ !p->next) return ERROR; /*不存在第i个元素*/ q = (4) ; /*令q指向待删除的结点*/ p->next = q->next; /*从链表中删除结点*/ (5) ; /*通过参数e带回被删除结点的数据*/ free(q); return SUCCESS; }


    正确答案:(1) k<i
    (2) p = p->next
    (3) p=L
    (4) p->next
    (5) *e = q->data

  • 第6题:

    阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
    [说明]
    函数GetListElemPtr(LinkList L,int i)的功能是查找含头结点单链表的第i个元素。若找到,则返回指向该结点的指针,否则返回空指针。
    函数DelListElem(LinkList L,int i,ElemType *e)的功能是删除含头结点单链表的第i个元素结点,若成功则返回SUCCESS,并由参数e带回被删除元素的值,否则返回ERROR。
    例如,某含头结点单链表L如下图(a)所示,删除第3个元素结点后的单链表如下图(b)所示。
    1.jpg

    #define SUCCESS 0 #define ERROR -1 typedef intStatus; typedef intElemType;

    链表的结点类型定义如下:

    typedef struct Node{ ElemType data; struct Node *next; }Node,*LinkList; [C代码] LinkListGetListElemPtr(LinkList L,int i) { /*L是含头结点的单链表的头指针,在该单链表中查找第i个元素结点; 若找到,则返回该元素结点的指针,否则返回NULL */ LinkList p; int k; /*用于元素结点计数*/ if(i<1 || !L || !L->next) return NULL; k=1; p=L->next; /*令p指向第1个元素所在结点*/ while(p &&______){ /*查找第i个元素所在结点*/ ______; ++k; } return p; } StatusDelListElem(LinkList L,int i,ElemType *e) { /*在含头结点的单链表L中,删除第i个元素,并由e带回其值*/ LinkList p,q; /*令P指向第i个元素的前驱结点*/ if(i==1) ______; else p=GetListElemPtr(L,i-1); if(!P || !p->next) return ERROR; /*不存在第i个元素*/ q=______; /*令q指向待删除的结点*/ p->next=q->next; //从链表中删除结点*/ ______; /*通过参数e带回被删除结点的数据*/ free(q); return SUCCESS; }


    答案:
    解析:
    k<i
    p=p->next
    p=L
    p->next
    *e=q->data


    【解析】

    本题考查C语言的指针应用和运算逻辑。
    本问题的图和代码中的注释可提供完成操作的主要信息,在充分理解链表概念的基础上填充空缺的代码。
    函数GetListElemPtr(LinkList L,int i)的功能是在L为头指针的链表中查找第i个元素,若找到,则返回指向该结点的指针,否则返回空指针。描述查找过程的代码如下,其中k用于对元素结点进行计数。

    k=1; p=L->next; /*令p指向第1个元素所在结点*/

  • 第7题:

    要从一个顺序表删除一个元素时,被删除元素之后的所有元素均需()一个位置,移动过程是从()向()依次移动一个元素。


    正确答案:前移;前;后

  • 第8题:

    某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。

    • A、单链表
    • B、仅有头指针的单循环链表
    • C、双链表
    • D、仅有尾指针的单循环链表

    正确答案:D

  • 第9题:

    在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行()操作与链表的长度有关。

    • A、删除单链表中的第一个元素
    • B、删除单链表中的最后一个元素
    • C、在单链表第一个元素前插入一个新元素
    • D、在单链表最后一个元素后插入一个新元素

    正确答案:B

  • 第10题:

    如果对线性表的操作只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用()。

    • A、只有表头指针没有表尾指针的循环单链表
    • B、只有表尾指针没有表头指针的循环单链表
    • C、非循环双链表
    • D、循环双链表

    正确答案:B

  • 第11题:

    填空题
    在一个循环队列中,队首指针指向队首元素的();从循环队列中删除一个元素时,其操作是先取出队首元素,后();在具有n个单元的循环队列中,队满时共有()个元素。

    正确答案: 前一个位置,移动队首指针,n-1
    解析: 暂无解析

  • 第12题:

    填空题
    如果要在链表中删除一个元素,则只要将要删除的元素的()一个元素的指针调整为指向要删除的元素的下一个元素。

    正确答案:
    解析: 暂无解析

  • 第13题:

    在一个长度为n的单链表中,在第i个元素之后删除一个元素时,需向前移动()个元素。

    A、n-i

    B、0

    C、n-i-1

    D、i


    参考答案:B

  • 第14题:

    某线性表最常用的运算是插入和删除,插入运算是指在表尾插入一个新元素。删除运算是指删除表头第一个元素,那么采用 ______ 存储方式最节省运算时间

    A.仅有尾指针的单向循环链表

    B.仅有头指针的单向循环链表

    C.单向链表

    D.顺序存储


    正确答案:A
    解析:由于规定了插入运算是在表尾插入一个新元素,删除运算是指删除表头第一个元素。如果使用单向链表、仅有头指针的单向循环链表,每次插入结点都要遍历整个链表,找到链尾,才能进行插入。如果采用顺序存储,每次删除表头元素时,都要移动n-1个元素。如果使用仅有尾指针的单向循环链表,插入新元素时,仅需移动尾指针就可以了:删除结点时,只需要一步操作就可以定位到头结点,就可以删除了,因为头结点是尾指针的下一个结点。

  • 第15题:

    对长串为n的顺序线性表进行删除元素的操作,如果删除每一个元素的概率相同,则删除一个元素移动元素的平均次数为

    A.n/2

    B.(n-1)/2

    C.(n+1)/2

    D.n


    正确答案:B
    解析:对长度为n的顺序线性表进行删除元素的操作,删除第i个元素移动元素的个数为n-i。如果删除每一个元素的概率相同,则概率为1/n,所以插入一个元素移动(n-1)/2。

  • 第16题:

    性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用(5)存储方式最节省运算时间。

    A.单链表

    B.仅有头指针的单循环链表

    C.双链表

    D.仅有尾指针的单循环链表


    正确答案:D
    解析:仅有头指针的单循环链表最费时。

  • 第17题:

    线性表L=(a1,a2,…,an)用数组表示,假定删除表中任何一元素的概率相同,则删除一个元素平均需要移动元素的个数为【 】。


    正确答案:(n-1)/2
    (n-1)/2 解析:删除每一个元素需要移动的个数分别是:0,1,2,…n-1。用高斯公式即可求出:平均移动每个元素的个数=(0+n-1)*n/2/n=(n-1)/2。

  • 第18题:

    在一个长度为n(n>1)的带头结点单链表h上,另设有尾指针r(指向尾结点)。与链表的长度有关的操作是()。

    A.删除单链表中的第一个元素
    B.删除单链表中的最后一个元素
    C.在单链表第一个元素前插入一个新元素
    D.在单链表最后一个元素后插入一个新元素

    答案:B
    解析:
    在单链表中要删除最后一个元素必须找到尾结点的前驱结点的指针。由于单链表只能访问结点的下一个结点,所以根据尾指针不能够直接找到它的前驱结点,只有从头开始依次向下找到尾结点的前驱结点。所以删除单链表中的最后一个元素与链表的长度有关。

  • 第19题:

    顺序存储的线性表,设其长度为n。在任何位置上插入或删除操作的时间代价基本上都是等效的。则插入一个元素大约需要移动表中的()个元素,删除一个元素时大约要移动表中的()个元素。


    正确答案:n(n+1)/2;n(n-1)/2

  • 第20题:

    在一个长度为n的顺序表中删除第i个元素,要移动()个元素,如果要在第i个元素前插入一个元素,要后移()个元素


    正确答案:n-i;n+i-1

  • 第21题:

    在一个循环队列中,队首指针指向队首元素的();从循环队列中删除一个元素时,其操作是先取出队首元素,后();在具有n个单元的循环队列中,队满时共有()个元素。


    正确答案:前一个位置;移动队首指针;n-1

  • 第22题:

    填空题
    在一个长度为n的顺序表中删除第i个元素,要移动()个元素,如果要在第i个元素前插入一个元素,要后移()个元素

    正确答案: n-i,n+i-1
    解析: 暂无解析

  • 第23题:

    填空题
    顺序存储的线性表,设其长度为n。在任何位置上插入或删除操作的时间代价基本上都是等效的。则插入一个元素大约需要移动表中的()个元素,删除一个元素时大约要移动表中的()个元素。

    正确答案: n(n+1)/2,n(n-1)/2
    解析: 暂无解析