![](https://static.youtibao.com/asksite/comm/h5/images/m_q_title.png)
在一个单链表中,已知q所指结点是P所指结点的前驱结点,若在q和P之间插入结点S,则执行()。A.s-&g
在一个单链表中,已知q所指结点是P所指结点的前驱结点,若在q和P之间插入结点S,则执行()。
A.s->next=p->next;p->next=s;
B.P->next=s->next;s->next=p;
C.q->next=s;s->next==D;
D.P->next=s;s->next=q;
![](https://static.youtibao.com/asksite/comm/h5/images/solist_ts.png)
在一个单链表中,已知q所指结点是P所指结点的前驱结点,若在q和P之间插入结点S,则执行()。
A.s->next=p->next;p->next=s;
B.P->next=s->next;s->next=p;
C.q->next=s;s->next==D;
D.P->next=s;s->next=q;
A.s→link=p→linkp→link=s
B.p→link=ss→link=q
C.p→link=s→links→link=p
D.q→link=ss→link=p
A.s↑.link:=p↑.link;p↑.link:=s
B.q↑.link:=s;s↑.link:=p
C.p↑.link:=s↑.link;s↑.link:=p
D.p↑.link:=s;s↑.link:=q
已知单链表中结点*q是结点*p的直接前驱,若在*q与*p之间插人结点*s,
则应执行以下()操作。
A、s->link-p-link;p->link-s;
B、q->link=s;s->link-p:
C、p->link-s->link;s~>link=p;
D、p->link=s;s->link=q;
A.s->link=p;p->link=s;
B.s->link=p->link:p->link=s:
C.S->link=p->link; p=s:
D.p->link=s:s->link=p:
A.p↑.rlink↑.llink:=q;p↑.rlink:=q;q↑.llink:=p;q↑.rlink:=p↑.rlink;
B.p↑.llink↑.rlink:=q;p↑.llink:=q;q↑.rlink:=p;q↑.llink:=p↑.llink;
C.q↑.llink:=p;q↑.rlink:=p↑.rlink;p↑.rlink ↑.llink:=q;p↑.rlink:=q;
D.q↑.rlink:=p;q↑.llink:=p↑.llink;p↑.llink ↑.rlink:=q;p↑.llink:=q;
算法实现的思路为:在有序单链表中插入一个数据元素x,首先要找到该元素应该插入到什么位置,才能保证插入后的单链表仍为有序表。因此,算法的第一步是寻找x的位置:设置指针p、q,最初p指向头结点,q指向头结点的下一个结点,比较q所指数据域的值与x的大小,如果小于x,则p、q分别向后移动一个位置,使p始终作为q的前驱结点,然后重复上面的比较过程;如果比较结果大于x或是比较到最后单链表结束了,则找到了插入位置,在p与q之间插入结点x即可。算法的具体实现如下:
A.q->next=p->next;p=q
B.p->next=q->next;q=p
C.q->next=p->next;p->next=q
D.p->next=q->next;q->next=p
A.s->next=p;p->next=s;
B.s->next=p->next;p->next=s;
C.s->next=p->next;p=s;
D.p->next=s;s->next=p;