单链表插入、删除操作单步解析(十三)

1.单链表定义 每个结点包含数据域和指针域,指针域存储下一个结点的地址。 2.插入操作 在第i个…

1.单链表定义

每个结点包含数据域和指针域,指针域存储下一个结点的地址。

2.插入操作

在第i个结点前面,插入一个e结点。

分析:

<1>.s->next = p->next;

如果想在第i个结点之前插入一个e结点,必须找到i结点前的i-1结点,在i-1结点以后插入e结点。

如上图:可以看出左边为i-1结点,右边为i结点。

s:表示指向e结点的指针,即e结点的地址。

p:表示指向i-1结点的指针,即i-1结点的地址。

s->next:表示指向e结点的s指针域存,储下一个结点的地址。

p->next:指向第i个结点的指针,即第i个结点的地址。

翻译:

将指向e结点的s指针的指针域(next),存储了第i个结点的地址(因为p指向i-1结点,p->next指向i结点).

<2>.p->next = s;

s:表示指向e结点的指针,即e结点的地址。

p:表示指向i-1结点的指针,即i-1结点的地址。

翻译:将指向i-1结点的指针p的指针域,存储了指向e结点的指针s(即e结点的地址)。

3.删除操作

删除第i个结点,其实就是把i结点跳过去。

分析:

<1>.p->next = q->next

p:指向i-1结点的指针,即i-1结点的地址。

q:指向i结点的指点,即i结点的地址。

翻译:

将指向i-1结点的指针p的指针域(next),存储了指向i结点的q的指针域的地址,其实q->next存储了第i+1结点的地址,这样就把第i个结点删除了。

本文来自网络,不代表软粉网立场,转载请注明出处:https://www.rfff.net/p/1099.html

作者: HUI

发表评论

您的电子邮箱地址不会被公开。

返回顶部