双向链表
来源:互联网 发布:福建农林大学网络 编辑:程序博客网 时间:2024/05/21 00:46
网上很多对双向链表解释的文章都是用这个结构:
它们的连接情况是这样的:
相当的不直观,今天我要从详细的地址出发来解释双向链表的原理。
现定义一个结构体如下:
struct student
{char name;
struct student *next;
struct student *prior;
};
现在有5个人A,B,C,D,E.这五个人构成的链表如下:
虚线部分为地址值,这个是为了描述方便随便写的值,在创建上述的链表时其实不用关心地址值到底是多少,这些地址都会放到某个变量当中,只要对变量进行赋值传递就能实现链表的构建。这里完全是为了分析才这么写的。从图中很容易看出蓝色的箭头组成了一个单链表,红色的箭头又组成了一个单链表(逆向的)。
这个图的精髓是告诉你后节点指针是指向下一个节点的内存起始地址处,前向节点是指向上一个节点的内存起始地址处。
下面将分析链表的前插与删除的例子,理解了这两个功能,其他的功能都能自己分析出来了。
双链表的前插,下面这是代码和代码分析。
写代码是不论是插入还是删除节点精髓都在于每一个节点的前后指针都要指向其他节点的内存起始位置
void InsertBefore(student *p,char x)
下面再分析删除,删除比较简单,代码如下:
void DeleteNode(student *p)
- SzNOI 双向约瑟夫(双向链表)
- 双向链表&&堆栈
- 双向链表
- 使用双向链表
- 双向链表
- 双向循环链表
- 双向循环链表
- 双向链表
- 实现双向链表
- 双向循环链表
- 建立双向链表
- 双向链表
- 双向链表
- 双向循环链表
- 双向链表
- 链表-双向链表
- 双向链表
- 双向动态链表
- Max Sum||HDU1003
- sqlserver数据库相关
- Intellij idea破解办法
- JavaScript_08
- C++ greater<int>()和less<int>()
- 双向链表
- Spring与Quartz的整合实现定时任务调度
- Union和Union All的区别
- 23种设计模式之-单例模式
- PG的两种集群技术:Pgpool-II与Postgres-XL
- Android进阶之路
- 关于有关const的用法总结
- 用localhost可以访问falsh插件,用ip无法访问 chrom设置
- 算法只是技术的一部分