已知带头结点的双向循环链表L,判断其为空表的条件是L->next==L && L->prior==L。
第1题:
第2题:
阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
设有一个带表头结点的双向循环链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0。每当在链表上进行一次L.Locate(x)操作时,令元素值x的结点的访问频度 freq加1,并将该结点前移,链接到现它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。
【函数】
void Locate( int &x)
{ <结点类型说明>
* p =first -> next;
while(p!=frist&&(1))P=P->next;
if(p! =first) /*链表中存在x*/
{(2);
<结点类型说明>
* current = P; /*从链表中摘下这个结点*/
Current -> prior -> next = current -> next;
Current -> next -> prior = current -> prior;
P = current -> prior; /*寻找重新插入的位置*/
While(p! =first &&(3))p=p->prior;
Current-> next =(4); /*插入在P之后*?
Current -> prior = P;
P -> next -> prior = current;
P->next=(5);
}
else printf("Sorry. Not find! \n"); /*没找到*/
}
第3题:
在非空双向循环链表结点中,prior域指向该结点的直接前驱,next域指向直接后续,那么在q所指的结点后面插入p所指的结点的过程为______。
A.q→next=p;p→prior=q;q→next→prior=p;p→next=q→next。
B.p→next=q→next;q→next=p;q→next→prior=p;p→prior=q。
C.p→prior=q;p→next=q→next;q→next=p;q→next→prior=p。
D.p→next=q→next;q→next→prior=p;p→prior=q;→next=p。
第4题:
在一个带头结点的循环双向链表中,若要删除指针p所指向的结点则执行()嗓作。
第5题:
判断带头结点的单链表L为空的条件()
第6题:
带头结点的双向循环链表L为空表的条件是()。
第7题:
带头结点head的双循环链表为空表的条件是()或()
第8题:
已知一个带头结点单链表L,在表头元素前插入新结点 *s的语句为:()
第9题:
第10题:
对
错
第11题:
L=s; s->next=L;
s->next=L; L=s;
s=L; s->next=L;
s->next=L; s=L;
第12题:
第13题:
带头结点的双向循环链表L为空的条件是()。
A.L==NULL
B.L->next==NULL
C.L->prior==NULL
D.L->next==L
第14题:
A.p==NULL
B.p->next==NULL
C.p->next->next==NULL
第15题:
非空的单循环链表L的尾结点P↑,满足( )
A.P↑.next=NULL;
B.P=NULL;
C.P↑.next=L;
D.P=L
第16题:
带头结点的循环单链表head为空的判断条件是()
第17题:
设head为单循环链表L的头结点,则L为空表的条件是()
第18题:
带头节点的单链表L为空的判定条件是()。
第19题:
已知一个不带头结点单链表的头指针为L,则在表头元素之前插入一个新结点*s的语句为:()
第20题:
非空双向循环链表中由q所指的结点后面插入一个由p指的结点的动作依次为:p->prior=q,p->next=q->next,q->next=p,q->prior->next←p。
第21题:
L = =null
L->data= =null
L->next= =null
L->next= =data
第22题:
L=s;s->next=L;
s->next=L->next;L->next=s;
s=L;s->next=L;
s->next=L; s=L;
第23题:
head == NULL
head != NULL
head->next == head
head->next == NULL
第24题: