关于数据结构线性链表中的指针后移和删除结点的疑问我想问问指针后移和删除元素是不是一回事?比如在线性链表中有三个结点A、B、CA指向B,B指向C那么A->next=A->next->next;(删除B结点,这里我

来源:学生作业学帮网 编辑:学帮网 时间:2024/05/14 15:25:01

关于数据结构线性链表中的指针后移和删除结点的疑问
我想问问指针后移和删除元素是不是一回事?
比如在线性链表中有三个结点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、B、CA指向B,B指向C那么A->next=A->next->next;(删除B结点,这里我 有一个循环单链表的长度大于1,表中既无头结点也无头指针.S为指向链表中某结点的指针,写算法,删除结点S线性数据结构 数据结构关于结点删除的问题 关于数据结构删除的三道题,(1)删除p所指向结点的后继结点(假设存在)(2)删除p所指向的结点(3)删除线性表中值为x的数据元素,输出yes,如果x不存在,输出no 关于数据结构的题.利用算法1.删除顺序表中值为x的元素.2.依次显示顺序表中数据元素的值.是属于线性表的顺序存储的那节知识, 一元多项式的表示及相加【实验目的】掌握C语言中结构类型和指针类型,指针是逻辑关系的映像.掌握线性链表的操作特点和动态产生、输出单链表的方法.掌握单链表的插入、删除操作的特点 ★ c语言中的线性数据结构是指什么?下列叙述中正确的是 BA 有一个以上根结点的数据结构不一定是非线性结构B 只有一个根结点的数据结构不一定是线性结构C 循环链表是非线性结构 D 双向 数据结构一些问题.在二叉树的链式结构中,定义了一个指针BTNode *p,为什么visit(p)中的p为结点,它不是根结点的指针吗?另外,在线性表中头指针head为什么可以和头结点比较,head->next是头结点还是 数据结构 线性表 for(++p;p 已知带表头结点的单链表L,指针P指向L链表中的一个结点(非首、尾结点):删除P结点的语句序列是? 1.二维数组是其数据元素为线性表的线性表.选项:1、 错 2、 对2.线性数据结构只能用顺序结构存放,非线性数据结构只能用链式存储存放.选项:1、 错 2、 对3.栈是一种对所有插入、删除操作限 数据结构线性表:集合A保存在线性表La中,对于La中的任意一个元素e,若e小于100,则把e插入到线性表La中,否则把e插入到线性表Lc中,初始条件为Lb和Lc不存在.请帮我编出此程序, 数据结构问题 已知指针ha和hb分别指向两个单链表的头结点,并且已知两个链表的长度分别为m和n.试数据结构问题已知指针ha和hb分别指向两个单链表的头结点,并且已知两个链表的长度分别为m 数据结构关于循环队列的问题若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再插入两个元素后,rear和front的值分别为多少? 数据结构算法2.1两个线性表LA和LB,求新的集合那个,C语言版完整程序怎么写啊 什么是数据结构? 怎么区分存储结构和逻辑结构?我可不可以说 线性表是一种存储结构? (考虑到线性存储方式…) 数据结构已知指针P指向双向链表中的一个结点(非首结点、非尾结点),则:(1)将结点S插入在P结点的直接 什么是数据结构里面的顺序表的插入和删除它们之间有什么区别,请通俗一点,最好有列子