已知一个带头结点的非空循环单链表,其尾指针是R,则其首元素结点的地址为:
A: R->next
B: *( R->next->next )
C: &( R->next->next )
D: R->next->next
A: R->next
B: *( R->next->next )
C: &( R->next->next )
D: R->next->next
举一反三
- 现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中连续的三个结点。 struct node { char data; struct node *next; }*p,*q,*r; 现要将q和r 所指结点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是______。 A: q->next=r->next;p->next=r;r->next=q; B: p->next=r;q->next=->next;r->next=q; C: q->next=r->next;r->next=q;p->next=r; D: r->next=q;p->next=r;q->next=r->next;
- 已知指针p指向单链表head中的某个结点,若删除其后继结点,则需执行()。 A: r=p; p->next=r->next; free(r); B: r=p->next; p=r->next; free(r); C: r=p->next; p->next=r->next; free(r); D: r=p->next; r->next=p->next; free(r);
- 有以下结构体说明和变量定义,指针p、q、r依次指向一个链表中的三个连续结点。struct node { int data struct node *next ; } *p, *q, *r;现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是 A: r->next=q; q->next=r->next; p->next=r; B: q->next=r->next; p->next=r; r->next=q; C: p->next=r; q->next=r->next; r->next=q; D: q->next=r->next; r->next=q; p->next=r;
- 在一个单链表中,已知 q 是 p 的前趋结点,若在 q 和 p 之间插入结点 s ,则应当执行语句序列( )。 A: s -> next = p -> next; p -> next = s; B: s -> next = q -> next; p -> next = s; C: s -> next = q -> next; q -> next = s; D: q -> next = s; s -> next = p;
- 在一单链表中,删除指针p所指的后继结点,以下语句正确的是() A: p=p-> next; B: s=p-> next;p-> next=s- <br/>>next;free (s) ; C: free (p-> next) ;p- <br/>>next=p-> next-> next; D: p-> next=p-> next- <br/>>next; free (p-> next) ;