设单链表中结点的结构为:已知单链表中结点*q是结点*p的直接前驱,若在*q与*p之间插人结点*s,则
设单链表中结点的结构为:
已知单链表中结点*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;
设单链表中结点的结构为:
已知单链表中结点*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;
在一个单链表中,已知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↑.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
设指针变量p指向单链表中的结点A,则删去结点A的语句序列为 Q=p->next;p->data = p->data: p->next=(); :feee(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
设单链表中结点的结构为:
若想在单链表中摘除结点*p(*p既不是第一个也不是最后一个结点)的直接后继,则应执行以下()操作.
A、p->link=p->link->link;
B、p-p->link;p->link-p->link->link;
C、p->link=p->link;
D、p=p->link->link;
A.s->next=p->next;p->next=-s;
B.q->next=s; s->next=p;
C.p->next=s->next;s->next=p;
D.p->next=s;s->next=q;
设单链表中结点的结构为:
在一个具有n个结点的单链表中插人一个新结点,并可以不保持原有顺序的算法的时间复杂度是().
A、O(1)
B、O(n)
C、O(n2)
D、O(nlog2n)
设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为()。
A.q=p->next;p->data=q->data;p->next=q->next;free(q);
B.q=p->next;q->data=p->data;p->next=q->next;free(q);
C.q=p->next;p->next=q->next;free(q);
D.q=p->next;p->data=q->data;free(q);
算法实现的思路为:在有序单链表中插入一个数据元素x,首先要找到该元素应该插入到什么位置,才能保证插入后的单链表仍为有序表。因此,算法的第一步是寻找x的位置:设置指针p、q,最初p指向头结点,q指向头结点的下一个结点,比较q所指数据域的值与x的大小,如果小于x,则p、q分别向后移动一个位置,使p始终作为q的前驱结点,然后重复上面的比较过程;如果比较结果大于x或是比较到最后单链表结束了,则找到了插入位置,在p与q之间插入结点x即可。算法的具体实现如下: