前言:
大三就开始了实习,但是刚刚发现居然连链表的操作都不会写,早就忘得一干二净了,脑海里好像也只有点链表的印象,果然基础不牢地动山摇,总结一遍链表的操作也帮助自己今后复习。
强烈建议参考文献(从初学者的角度来说):《大话数据结构》
1. 开始:
首先确认节点node
的数据结构
typedef struct node{
int value;
struct node *next;
}node;
然后我们要做的事就是生成第一个节点(我取名为head):
node *head;
head = new node;
head->value = 0;//给他的数据域赋值为0
head->next = NULL;//指定他的下一个节点为空
2.在这之后新建一个节点
node *pnew;
pnew = new node;
pnew->value = 1;
pnew->next = NULL;
head->next = pnew;//这里之前是重复的操作,我们就只是将刚才的节点的next指向了这个节点
觉得好简单是不是,哈哈哈哈哈,可能有人说随便一个计算机在读的本科生都能写出来是不是,我也不敢信长时间不看链表操作的时候我居然会一头蒙,唉,果然看别人的代码和自己能写出来的代码完全就是两回事
,真的是基础不牢地动山摇
3.从中插入一个节点
(我们假设不知道pnew,只知道head)
我们从中插入一个新节点pnew2,首先插入将新节点pnew的next指向head的下一个节点pnew,然后将head的next指向插入节点pnew2:
1.pnew2->next = head->next;
2.head->next = pnew2;
这里能不能转换呢?答案肯定是:不行的🙅♂️
因为在CPP里,=
是赋值操作,但我更喜欢将她理解为copy,拷贝操作,也就是传值,如果我们反过来
-----错误示范-----
1.head->next = pnew2;
2.pnew2->next = head->next; //相当于pnew2->next = pnew2</