链表 插入一个节点
经典举例
如图:共有四个节点,将第四个节点插入到①②之间。定义了指针向量p指向第一个节点,指针向量q指向节点④
定义的节点的数据类型如下:
//节点的数据类型
typedef struct Node
{
int data; //数据域
struct Node * pNext; //指针域, 指向跟他本身数据类型一模一样的另外一个数据类型
}NODE, *PNODE; //NODE 等价于 struct Node , PNODE等价于 struct Node *
实现在①②之前插入节点的代码:
q->pNext = p->pNext;
p->pNext = q;
解释:
pNext:节点的指针域
p->pNext : p指针指向的节点(即①)的指针域,所存放的是 下一个元素的地址(即②的地址),表示为节点①指向节点②
q->pNext : q指针指向的节点(即④)的指针域,所存放的是 下一个元素的地址(初始状态下没有指向,所以指针域内为垃圾值)
q->pNext = p->pNext;
从上面的理解不难看出,这句代码的意思就是将 p->pNext 中存放的地址存放到q->pNext(指针域)中,而p->pNext 中存放的地址就是节点②的地址,所以节点②的地址被存放到了节点④中,那么就有节点④指向节点②,节点②与节点①的指向关系消失,如下图
在上一步,已经将节点①的指针域中的地址赋值给了q->pNext,此时节点①指针域是空的。
p->pNext = q;
将指针变量q存放的的地址存放到p->pNext(指针域)中,而q存放的是节点④的地址,所以节点④的地址被存放到了节点①中,那么就有节点①指向节点④
这样就完成了简单的插入。
小记
个人的看法,主要还是笔记的作用,同时也能够点拨一些和我一样初学者,虽然短短千字的博客,觉得可能还会漏洞百出,望指正批评。
但是鄙人认为主体方向没有问题,才敢发布