当前位置:网站首页>双链表插入、删除操作单步解析(十四)
双链表插入、删除操作单步解析(十四)
2022-04-21 20:23:00 【慢慢的燃烧】
1.双链表定义
单链表只能向后操作,不能向前操作。双链表可以向前和向后操作。
双链表特点:以下图解释
一个前驱指针:ai的前驱指针,指向ai-1结点,即存放ai-1的地址。
数据域:存放数据
一个后驱指针:ai的后驱指针,指向ai+1结点,即存放ai+1的地址。
以上概念是是否能理解双向链表的关键。

2.插入操作
在第i个结点前面,插入一个e结点。

分析:
<1>.p->prior->next = s;
p:表示指向ai结点的指针
p->prior:表示存放ai-1结点的地址。
p->prior->next:表示存放ai-1结点的地址的后驱指针,没插入e结点之前,是指向ai结点的,但是现在让它指向e结点的地址(指针s).
翻译:将ai-1结点后驱指针指向s,即保存了s结点的地址。
<2>.s->prior = p->prior;
s:指向要插入e结点的指针,即e结点的地址。
s->prior:e结点地址s的前驱指针,存放着上一个结点的地址。
p:表示指向ai结点的指针,即ai结点的地址。
p->prior:表示存放ai-1结点的地址。
翻译:s结点的前驱指针指向了ai-1的地址。
<3>.s->next = p;
s:指向要插入e结点的指针,即e结点的地址。
s->next:s结点的后驱指针;
p:表示指向ai结点的指针,即ai结点的地址。
翻译:s结点的后驱指针指向p结点,即s结点的后驱指针保存了ai结点的地址。
<4>.p->prior = s;
p:表示指向ai结点的指针,即ai结点的地址。
p->prior:表示存放ai-1结点的地址。
s:指向要插入e结点的指针,即e结点的地址。
翻译:指向ai结点的p指针的前驱指针指向e结点,即ai结点前驱指针保存了s结点的地址。
至此,将e结点插入在ai-1和ai结点之间。
3.删除操作
删除ai结点。

分析:
<1>.p->prior->next = p->next;
p:指向ai结点的指针。
p->prior:ai结点的前驱指针,保存了ai-1结点的地址。
p->prior->next:ai-1结点的后继指针域,实际存放着ai结点的地址。
p->next:ai结点的后继指针,存放着ai+1结点的地址。
翻译:将ai-1结点的后继指针指向ai结点的后继指针,因为ai的后继指针存放着ai+1的地址,其实就是ai-1结点的后指针指向了ai+1结点的地址,即保存了ai+1结点的地址,跳过了ai结点。
<2>.p->next->prior = p->prior;
p:指向ai结点的指针。
p->next:ai结点的后继指针,保存着ai+1结点的地址。
p->next->prior:ai+1结点的前驱指针,保存着ai结点的地址。
p->prior:ai结点的前驱指针,保存了ai-1结点的地址。
翻译:将ai+1结点的前驱指针,指向ai-1结点的地址。
至此,就删除了ai结点。
版权声明
本文为[慢慢的燃烧]所创,转载请带上原文链接,感谢
https://unbroken.blog.csdn.net/article/details/124299028
边栏推荐
- The difference between English and American pronunciation [turn]
- Channel allocation don't use the four-color theorem
- [CTF. Show. Reverse] Abstract Language
- (转载)mysql HA
- La différence et la relation entre glew, Glee et GL Glu glut glx glext
- MFC CCombobox usage example
- Multi factor strategy
- Share the advantages of Intranet instant messaging software
- Mandelbrot集的最新变化形态一览——MandelBox,Mandelbulb,Burning Ship,NebulaBrot
- How to beat the king with sonic cloud machine
猜你喜欢

How to ensure the stability and correctness of API? That's all you need

Your independent station conversion rate is low? Three tips to help improve conversion

Pfsense configuring IPSec site to site tunneling using certificate authentication Guide

LeetCode_70 爬楼梯

实战 | UI 自动化测试框架设计与 PageObject 改造

MySQL error 2005

CUDA02 - 访存优化和Unified Memory

Changan dark blue c385 product information exposure aims at 200000 level, and the number one target is model 3!

Debugging MS source code

3D 沙盒游戏之人物的点击行走移动
随机推荐
How chaotic is the research market
实战 | UI 自动化测试框架设计与 PageObject 改造
R language data analysis from entry to advanced: (8) data format conversion of data cleaning skills (including the conversion between wide data and long data)
【原】通俗说法所谓数码相机的“动态像素”和“静态像素”背后的故事
After learning this tutorial of capturing packages by Charles, I unloaded Fiddler directly
The difference between English and American pronunciation [turn]
MySQL集群解决方案
在IE和Edge中用JS判断只能输入数字,字母,日期型。
IaaS,PaaS,SaaS 的区别
warning: LF will be replaced by CRLF in composer.json.
【 summer internship 】
First acquaintance with EEMBC coremark
How to use xUnit framework to maintain test cases?
C# 版本的 計時器類 精確到微秒 秒後保留一比特小數 支持年月日時分秒帶單比特的輸出
<2021SC@SDUSC>山东大学软件工程应用与实践JPress代码分析(一)
The whole process of callback registration and callback of openharmony sensor module
C语言:简单的利润与奖金
解决composer报错:Could not find a version of package xxx/yyy
Test while (U --); And while (U) U --; Differences between
渤海期货开户安全吗?渤海期货公司开户方法是什么?