4、结点:由数据域和指针域两部分组成
数据域:存储元素数值数据;
指针域:存储直接后继结点的存储位置。
5、**单链表:**只有一个指针域的链表;
**双链表:**结点有两个指针域的链表;
**循环链表:**首尾相接的链表。
**6、头指针:**是指向链表中第一个结点的指针;
**开始结点(首元结点):**是指链表中存储第一个数据元素a1的结点;
**头节点:**是在链表的开始结点之前附设的一个结点。
**7、带头结点的单链表:**头指针head指向头节点,头节点的值域不含任何信息。头指针head始终不等于NULL。head->next等于NULL时,链表为空。
**不带头节点的单链表:**头指针head直接指向开始结点。
二、链表(链式存储结构)的特点
-
结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻。
-
访问时只能通过头指针进入链表,并通过每个结点的指针域依次向后顺序扫描其余结点,所以寻找第一个结点和最后一个结点所花费的时间不一样。
-
理解顺序表和链表的存取方式,注意不是存储方式:顺序表——>随机存取;链表——>顺序存取。
三、单链表的定义与表示
typedef struct LNode{ //声明结点的类型和指向结点的指针类型
ElemType data; //结点的数据域
struct LNode *next; //结点的指针域
}LNode,*LinkList; //LinList为指向结构体LNode的指针类型
- 单链表是有头指针唯一确定,因此单链表可以用头指针的名字命名。
- 定义链表L:LinkList L;
- 定义结点指针:LNode *p;(或者是:LinkList p;)
四、单链表基本操作的实现
1、单链表的初始化(带头结点的单链表)
单链表的初始化:即构造一个空表
算法步骤:(1)生成新结点作头节点,用头指针L指向头结点。(2)将头结点的指针域置空。
算法描述:
void InitList(LinkList &L) { //L为引用型参数
L=(LinkList)malloc(sizeof(LNode)); //创建头结点L
L->next=NULL; //头结点next置为空表示空的单链表
}
malloc(m)函数,开辟m字节长度的地址空间,并返回这段空间的首地址;
sizeof(x)运算,计算x的长度;
注意:需要加载头文件:<stdlib.h>
2、判断链表是否为空
空表:链表中无元素,称为空链表(头指针和头结点任然在)。
int listEmpty(LinkList L){ //若L为空表,则返回0,否则返回1
if(L->next==NULL){
return 0;
}else{
return 1;
}
}
3、单链表的销毁
算法思路:从头指针开始,依次释放所有结点。
void destroyList(LinkList &L){
LinList p;
p=(LinkList)malloc(sizeof(LNode));
while(L!=NULL){
p=L;
L=L->next;
free§;
}
free§函数,释放指针p所指变量的存储空间,即彻底删除一个变量。
4、清空单链表
链表任然存在,但链表中无元素,成为空链表(头指针和头结点任然存在)
算法思路:依次释放所有结点,并将头结点指针域设置为空。
void clearList(LinkList &L){
LinkList p,q;
p=L->next; //p表示首元结点
while(p!=NULL){
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
更多面试题
**《350页前端校招面试题精编解析大全》**内容大纲主要包括 HTML,CSS,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据结构,项目,职业发展等等
[外链图片转存中…(img-hnZefUf0-1714369296942)]
更多面试题
**《350页前端校招面试题精编解析大全》**内容大纲主要包括 HTML,CSS,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据结构,项目,职业发展等等
[外链图片转存中…(img-A6ZdrKYE-1714369296942)]