【基础知识】链表

链表分为程序内部内存内部

程序内部
	     ________________________________
   head	|内存内部  1 add   2 add   5 add  |
l->口-> |  		 口口->   口口->   口口   |
	    —————————————————————————————————	
head存链表地址(也就是1的add)
链表中第一个元素可以索引到第二个, 第二个可以找到第三个, 以此类推.
这三个元素都可以通过程序内部的head指针找到, 所以他们没有发生内存泄露

结构定义:

节点结构定义: 
	节点有两个字段 
	1. 数据区
	2. 地址区(存放链表下一个元素的地址)
链表结构定义:
	1. 虚拟节点head
	2. 链表长度

链表的插入:

要将3插入2和4中间 : 3的地址区放4的地址, 将2地址区中4的地址改为3的地址, 					  
node中存着3的地址, 所以2地址区 = node.
	      node  3
            口->口口
		    ^	   |
	   	    |	   v
   head   2 |	   4	 
l->口->   口口     口口->   口口->   口口
插入结束, 释放node指针

链表的删除:

删除4 : 直接更改3的地址区, 改成5的地址, 释放掉4
			      ____________
head           3 |      4     |   5
口->   口口->   口口     口口    ——>口口

单项循环链表

【注意】head存储的是单项循环链表尾节点的地址

如果要往头部(0位)插入, head走0步,往1位置插入, 走一步

猜你喜欢

转载自blog.csdn.net/tarawin/article/details/88073104