首页 > 试题广场 >

设一个链表最常用的操作是在表尾插入结点和删除表尾结点,则选用

[单选题]

设一个链表最常用的操作是在表尾插入结点和删除表尾结点,则选用(   )最节省时间。

  • 单循环链表
  • 带尾指针的单循环链表
  • 带头结点的双向循序链表
  • 单链表
简单,带头结点的双向循环链表CL;
1. 表尾插入结点p:
    p->pre = CL->pre;   
    p->next = CL;
    CL->pre->next = p;
    CL->pre = p;
2. 删除表尾结点:
    p = CL->pre->pre;
    CL->pre = p;
    p->next = CL;


发表于 2020-03-06 01:31:05 回复(2)
选C
双链表的头指针的PRE就是尾部,所以只需要从头指针向前迭代一个就到尾节点了。
发表于 2019-05-10 15:00:31 回复(0)
选C。双向循环链表,头节点之前就是尾节点。
发表于 2023-02-02 23:47:04 回复(0)
选c
单看插入的话,b和c都可以,因为都可以快速找到表尾
而删除只能选c,如果选b,则删除尾结点后,需要循环n-1次(n是表长)找到该结点的前一个结点(为了设置后继结点为空)
发表于 2022-02-15 11:36:38 回复(0)
选C 
删除尾节点
q=L->NEXT->PRE;q->PRE->NEXT=L->NEXT;L->NEXT->PRE=q->PRE;free(q);
插入尾节点
L->NEXT->PRE->NEXT=Q;Q->PRE=L->NEXT->PRE;L->NEXT->PRE=Q;Q->NEXT=L->NEXT
发表于 2022-01-26 10:26:36 回复(0)
C,删除尾部结点需要修改前驱的指针;带尾指针的双向循环方便找到尾部和 尾部前驱
发表于 2022-01-11 10:01:27 回复(0)
C
发表于 2022-01-09 14:42:46 回复(0)
C
插入:
p->next = end->next;
p->pre = head->pre;
end->next = p;
head->pre=p;
删除:
head->pre = head-pre-pre;
head->pre->next = head;
对于B选项,如果要删除,末尾节点需要从头遍历到倒数第二个结点,对于大量数据来说指针移动太过浪费时间。

发表于 2020-05-11 22:45:16 回复(0)
C
发表于 2020-05-03 17:50:47 回复(0)
选C,B删除不行
发表于 2019-03-16 20:57:52 回复(0)
选c,
A.D不可能
B答案适合在结尾插入一个节点和删除第一个节点的情况
发表于 2018-11-20 09:39:02 回复(0)
选B
在尾节点后插入指针为p的结点:p-> next= tail-> next;tail->next=p;
删除尾节点:tail = tail.next
C双向循环自有它的好处,但是考虑到插入、删除需要改变更多的指针,综合考虑b合适
编辑于 2017-08-31 23:57:05 回复(1)
选C
双向循环 链表的头指针的pre指向的就是尾部,从头指针向前移动一次指针即可!
发表于 2017-03-24 17:24:44 回复(1)