已知单项线性链表的结点定义如下( )
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/01 09:32:16
已知单项线性链表的结点定义如下( )
struct node
{
int data;
struct node *next;
} *pt1;
已知p为链表中的一个结点,它的后继结点是q (p->next指向q),则删除结点q的语句( )
A)free(q);
B)free(q); pt1 = p->next; p->next = pt1->next;
C)pt1 = p->next; free(q); p->next = pt1->next;
D)pt1 = p->next; p->next = pt1->next; free(q);
答案是选C,
struct node
{
int data;
struct node *next;
} *pt1;
已知p为链表中的一个结点,它的后继结点是q (p->next指向q),则删除结点q的语句( )
A)free(q);
B)free(q); pt1 = p->next; p->next = pt1->next;
C)pt1 = p->next; free(q); p->next = pt1->next;
D)pt1 = p->next; p->next = pt1->next; free(q);
答案是选C,
答案是全错.
正确答案是
pt1 = q->next; free(q); p->next = pt1;
原因:
设这个链表依次是p->q->A->……
如果要删除q,其实就是变成p->A->……
关键在于,直接free(q)的话,q->next,也就是A的地址就丢失了.
所以在free(q)之前,先要保存A的地址.
pt1 = q->next; // q的next就是A的地址
free(q);
p->next = pt1; // p的next变成A的地址
正确答案是
pt1 = q->next; free(q); p->next = pt1;
原因:
设这个链表依次是p->q->A->……
如果要删除q,其实就是变成p->A->……
关键在于,直接free(q)的话,q->next,也就是A的地址就丢失了.
所以在free(q)之前,先要保存A的地址.
pt1 = q->next; // q的next就是A的地址
free(q);
p->next = pt1; // p的next变成A的地址
已知单项线性链表的结点定义如下( )
已知带表头结点的单链表L,指针P指向L链表中的一个结点(非首、尾结点):删除P结点的语句序列是?
已知带头结点的单链表L,指针P指向L链表中的一个结点为(非首结点、非尾结点),
数据结构已知指针P指向双向链表中的一个结点(非首结点、非尾结点),则:(1)将结点S插入在P结点的直接
关于数据结构线性链表中的指针后移和删除结点的疑问
在循环双向链表中表头结点的左指针域指向()结点,最后一个结点的右...
什么是线性分子?什么是非线性分子?(不要线性碳链高分子的定义)急!
数据结构的试题求帮忙1.在( )链表中,从任何一结点出发都能访问到表中的所有结点.2.栈和队列均是运算受限的线性表,栈的
小学奥数中一笔画的奇结点定义
只有一个根结点的数据结构是线性结构
已知图的邻接表如下所示,根据算法,则从顶点0出发按广度优先遍历的结点序列是
已知一棵树的由根至叶子结点按层次输入的结点序列及每个结点的度试写出构造此树的孩子-兄弟链表的算法.