关于数据结构线性链表中的指针后移和删除结点的疑问
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/08 06:12:55
关于数据结构线性链表中的指针后移和删除结点的疑问
我想问问指针后移和删除元素是不是一回事?
比如在线性链表中有三个结点A、B、C
A指向B,B指向C
那么A->next=A->next->next;(删除B结点,这里我想问问,是不是这儿一定要加个free(B)才算删除B结点?)
与B=B->next;(指针后移)
是不是都是一回事,把B结点删除了.
假如是一回事的话,那么算法
Status Insert(LinkList &L,int i,int b)//在无头结点链表L的第i个元素之前插入元素b
{
p=L;
q=(LinkList*)malloc(sizeof(LNode));
q.data=b;
if(i==1)
{
q->next=p;
L=q; //插入在链表头部
}
else
{
while(--i>1)
p=p->next;
q->next=p->next;
p->next=q; //插入
}
}//Insert
里面的
while(--i>1)
p=p->next;
实际上也就是在一直删除结点咯?
那不就是做了多余的事情吗?要求的只是“在无头结点链表L的第i个元素之前插入元素b”,可结果插入是插入了,却删除了许多的结点.
十分不解,期待回答.(是在没分了,想给也给不了.)
是不是这样一回事
A->next是存储了结点A的后继结点的位置.
那么 A->next =A->next->next的意思就是改变了这个位置,A的后继结点变成了C.
而B=B->next,就是让指针B指向了B的后继结点,但因为A的指针域无变化,所以B仍然是A的后继结点.
最后我还想问个问题,两个结点之间比如一个结点A和B,只要A->next所储存的是B的位置,无论有没有指针指向B,B就是A的后继结点.
我想问问指针后移和删除元素是不是一回事?
比如在线性链表中有三个结点A、B、C
A指向B,B指向C
那么A->next=A->next->next;(删除B结点,这里我想问问,是不是这儿一定要加个free(B)才算删除B结点?)
与B=B->next;(指针后移)
是不是都是一回事,把B结点删除了.
假如是一回事的话,那么算法
Status Insert(LinkList &L,int i,int b)//在无头结点链表L的第i个元素之前插入元素b
{
p=L;
q=(LinkList*)malloc(sizeof(LNode));
q.data=b;
if(i==1)
{
q->next=p;
L=q; //插入在链表头部
}
else
{
while(--i>1)
p=p->next;
q->next=p->next;
p->next=q; //插入
}
}//Insert
里面的
while(--i>1)
p=p->next;
实际上也就是在一直删除结点咯?
那不就是做了多余的事情吗?要求的只是“在无头结点链表L的第i个元素之前插入元素b”,可结果插入是插入了,却删除了许多的结点.
十分不解,期待回答.(是在没分了,想给也给不了.)
是不是这样一回事
A->next是存储了结点A的后继结点的位置.
那么 A->next =A->next->next的意思就是改变了这个位置,A的后继结点变成了C.
而B=B->next,就是让指针B指向了B的后继结点,但因为A的指针域无变化,所以B仍然是A的后继结点.
最后我还想问个问题,两个结点之间比如一个结点A和B,只要A->next所储存的是B的位置,无论有没有指针指向B,B就是A的后继结点.
那么A->next=A->next->next;(删除B结点,这里我想问问,是不是这儿一定要加个free(B)才算删除B结点?)
首先 A->next =A->next->next 意思只是将A的指针指向C 不是说 删除B B在内存中还是存在的 只是和A C失去了前后继的关系 用free 来释放B节点
而后面的p=p->next 不是删除节点,而是使得指针p向后移动 明白吗
首先 A->next =A->next->next 意思只是将A的指针指向C 不是说 删除B B在内存中还是存在的 只是和A C失去了前后继的关系 用free 来释放B节点
而后面的p=p->next 不是删除节点,而是使得指针p向后移动 明白吗
关于数据结构线性链表中的指针后移和删除结点的疑问
已知带表头结点的单链表L,指针P指向L链表中的一个结点(非首、尾结点):删除P结点的语句序列是?
数据结构已知指针P指向双向链表中的一个结点(非首结点、非尾结点),则:(1)将结点S插入在P结点的直接
数据结构的试题求帮忙1.在( )链表中,从任何一结点出发都能访问到表中的所有结点.2.栈和队列均是运算受限的线性表,栈的
在长度大于1的循环列表中,既无头结点也无根结点,S维指向列表中的某个节点指针,删除这个S结点的前续结点
关于数据结构删除的三道题,
关于数据结构的一道题试写一算法,将指针s指向的无头结点的单链表链接到带头结点单链表L的最后一个结点之后.函数原型使用St
数据结构:rear是指向非空带头结点的循环单链表的尾指针,则删除起始点的操作可表示为()选择哪个求大神
已知带头结点的单链表L,指针P指向L链表中的一个结点为(非首结点、非尾结点),
只有一个根结点的数据结构是线性结构
一个链表不知道头结点,有一个指针指向其中一个结点,请问如何删除这个指针指向的结点.
什么是数据结构里面的顺序表的插入和删除