有以下结构体说明和变量定义,如图所示,指针p、q、r,分别指向此链表中的3个连续结点。 Struct node { int data; Struct node *hext; } *p,*q, *r; 现要将Q所指结点

admin2009-01-15  23

问题 有以下结构体说明和变量定义,如图所示,指针p、q、r,分别指向此链表中的3个连续结点。    Struct node    {    int  data;  Struct  node  *hext;    }  *p,*q,
*r;    现要将Q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是

选项 A、p->next=q->next;
B、p->next=p->next->next;
C、p->next=r;
D、p=q->next;

答案8

解析 要删除链表中间的某个结点,只需要使它的前一个结点的next指针指向它的后一个结点-不过,严格来讲还需要使用free()函数释放掉该结点在内存中所占的空间。本题要删除的是q所指结点(以下简称q结点),只需使p结点的next指针指向r结点即可。选项A中,  因为 Q结点的next指向r结点,所以执行p->next=q->next;语句后p结点的next就指向了r结点,故选项A能完成删除。选项B中,p->next->next等价于q->next,因此也能完成删除。选项C直接让p->next指向r结点,当然可以删除。选项D使指针p指向q->next (即r结点),这样做不会影响到内存中的链表,所以应该选择D。
转载请注明原文地址:https://kaotiyun.com/show/LbXp777K
0

随机试题
最新回复(0)