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)
(1)编写一个算法,从任一给定的位置(pr,p)开始,将指针p右移k个结点。如果p移出链表,则将p为0,并让pr停留在链表最右边的结点上。
(2)编写一个算法,从任一给定的位置(pr,p)开始,将指针p左移k个结点。如果p移出链表,则将p置为0,并让pr停留在链表最左边的结点上。
设单链表中结点的结构为:
已知单链表中结点*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.单链表可以动态增长
B.单链表中插入数据时,不需要移动插入点之后的结点
C.单链表中删除数据时,不需要移动删除结点之后的结点
D.单链表和数组一样,必须事先确定结点的个数
设单链表中结点的结构为:
若想在单链表中摘除结点*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.单链表的插入操作中,需要建立一个新数据结点
B.单链表的访问方式是顺序访问方式,即要从第一个结点开始依次访问其他结点
C.建立单链表时,有正向生成构造和反向生成构造两种方法
D.单链表删除操作中,仅需要将被删结点从链表上取下来既可
A、p->rLink=s;s->lLink=p;p->rLink->1Link=s;s->rLink=p->rLink;
B、p->rLink=s;p->rLink->lLink=s;s->lLink=p;s->rLink=p->rLink;
C、s->lLink=p;s->rLink=p->rLink;p->rLink=s;p->rLink->1Link=s;
D、s->1Link=p;s->rLink=p->rLink;p->rLink->ILink=s;p->rLink=s;
设单链表中结点的结构为:
在一个具有n个结点的单链表中插人一个新结点,并可以不保持原有顺序的算法的时间复杂度是().
A、O(1)
B、O(n)
C、O(n2)
D、O(nlog2n)
针对带附加头结点的单链表,试编写下列函数。
(1)定位函数Locate:在单链表中寻找第i个结点。若找到,则函数返回第i个结点的地址;若找不到,则函数返回NULL。
(2)求最大值函数max:通过一趟遍历在单链表中确定值最大的结点,
(3)统计函数number:统计单链表中具有给定值x的所有元素,
(4)建立函数create:根据一维数组aLn]建立一个单链表,使单链表中各元素的次序与a[n]中各元素的次序相同,要求该程序的时间复杂度为O(n)。
(5)整理函数tidyup:在非逆减有序的单链表中删除值相同的多余结点。