数据结构之线性表(单链表一)

4、结点:由数据域和指针域两部分组成

数据域:存储元素数值数据;

指针域:存储直接后继结点的存储位置。

5、**单链表:**只有一个指针域的链表;

**双链表:**结点有两个指针域的链表;

**循环链表:**首尾相接的链表。

**6、头指针:**是指向链表中第一个结点的指针;

**开始结点(首元结点):**是指链表中存储第一个数据元素a1的结点;

**头节点:**是在链表的开始结点之前附设的一个结点。

**7、带头结点的单链表:**头指针head指向头节点,头节点的值域不含任何信息。头指针head始终不等于NULL。head->next等于NULL时,链表为空。

**不带头节点的单链表:**头指针head直接指向开始结点。

二、链表(链式存储结构)的特点


  1. 结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻。

  2. 访问时只能通过头指针进入链表,并通过每个结点的指针域依次向后顺序扫描其余结点,所以寻找第一个结点和最后一个结点所花费的时间不一样。

  3. 理解顺序表和链表的存取方式,注意不是存储方式:顺序表——>随机存取;链表——>顺序存取。

三、单链表的定义与表示


typedef struct LNode{ //声明结点的类型和指向结点的指针类型

ElemType data; //结点的数据域

struct LNode *next; //结点的指针域

}LNode,*LinkList; //LinList为指向结构体LNode的指针类型

  1. 单链表是有头指针唯一确定,因此单链表可以用头指针的名字命名。
  1. 定义链表L:LinkList L;
  1. 定义结点指针: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前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

更多面试题

**《350页前端校招面试题精编解析大全》**内容大纲主要包括 HTML,CSS,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据结构,项目,职业发展等等

资料获取方式:点击蓝色传送门免费获取

[外链图片转存中…(img-hnZefUf0-1714369296942)]

更多面试题

**《350页前端校招面试题精编解析大全》**内容大纲主要包括 HTML,CSS,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据结构,项目,职业发展等等

资料获取方式:点击蓝色传送门免费获取

[外链图片转存中…(img-A6ZdrKYE-1714369296942)]

  • 27
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值