1.7 算法描述
2、双向链表
2.1 定义
2.2 双向链表的初始化
2.3 双向链表的插入
2.4 双链表的删除
3、单链表、循环链表、双向链表的时间效率比较
4、顺序表和链表的比较
5、线性表的合并
5.1 问题描述
5.2 代码呈现
6、有序表的合并
6.1 问题描述
6.2 算法步骤
6.3 代码呈现
7、链表的合并
1、循环链表
======
1.1 定义
是一种头尾相连的链表(即:表的最后一个结点的指针域指向 头结点,整个链表形成一个环)
1.2 优点
从表中的任何一个结点出发均可以找到表中的其他结点
1.3 链表的终止条件
判断他们是否指向了头指针
p != L p -> next != L
1.4 初始化链表
//初始化一个循环单链表
bool InitList(LinkList &L){
L=(LNode *)malloc(sizeof(LNode));//分配一个头结点
if(L==NUll) //内存分配不足,分配失败
return false;
L->next=L; //头结点next指向头结点
return true;
}
1.5 带有尾指针的循环链表
1.6 合并带有尾指针的两个循环链表
1.7 算法描述
LinkList Connect(LinkList Ta,LinkList Tb){
p = Ta->next; //p存表头结点
Ts->next = Tb->next->next; //Tb表头连接到Ta表尾
delete Tb->next; //释放Tb表头结点
Tb ->next=p; //修改指针
return Tb;
}
2、双向链表
======
2.1 定义
在单链表中,查找直接后继结点的执行时间为O(1),而查找直接前驱的执行时间为O(n)。为克服单链表这种单向性的缺点,可利用双向链表(Double Linked List)。
顾名思义,在双向链表的结点中有两个指针域,一个指向直接后继,另一个指向直接前驱。结点结构如下图所示。
双向循环链表
2.2 双向链表的初始化
typedef struct DuLNode{
ElemType data; //数据域
struct DuLNode *prior; //指向直接前驱
struct DuLNode *next; //指向直接后驱
}DuLNode,*DuLinkList;
2.3 双向链表的插入
bool ListInsert_DuL(DuLinkList &L,int i,ElemType e){
//在带头结点的双链表L中第i个位置之前插入元素e
DuLNode *p,*s;
if(!(p=GetElem_DuL(L,i))) //在L中确定第i个元素的位置指针p
return false; //p为NULL时,第i个元素不存在
s=(DuLNode )malloc(sizeof(DuLNode));//生成新结点s
s->data=e; //将结点*s数据域置为e
s->prior=p->prior; //将结点*s插入L中,此步对应上图①
p->prior->next=s; //对应上图②
s->next=p; //对应上图③
p->prior=s; //对应上图④
return true;
}
2.4 双链表的删除
void ListDelete_DuL(DuLinkList &L,int i){
//删除带头结点的双向链表L中的第i个元素
DuLNode *p,*s;
if(!(p=GetElem_DuL(L,i))) //在L中确定第i个元素的位置指针p
return false; //p为NULL时,第i个元素不存在
p->prior->next=p->next; //修改被删结点的前驱结点的后继指针,对应上图①
p->next->prior=p->prior; //修改被删结点的后继结点的前驱指针,对应上图②
free§; //释放被删结点的空间
}
3、单链表、循环链表、双向链表的时间效率比较
======================
4、顺序表和链表的比较
===========
1)链式存储结构的优点:
-
结点空间可以动态申请和释放
-
数据元素的逻辑次序靠结点的指针来指示,插入和删除时不需要移动数据元素
2)链式存储结构的缺点:
-
存储密度小,每个结点的指针域需要额外占用存储空间,当每个结点的数据域所占的字节不多时,指针域所占用存储空间的比重显得很大
-
链式存储是非随机存取结构,对任一结点的操作都要从头结点依指针链查找到该结点,这增加了算法的复杂度
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里免费领取!
.(img-OB6aB9xf-1713545178234)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
[外链图片转存中…(img-tNgAWSCO-1713545178234)]
最后
前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里免费领取!
[外链图片转存中…(img-ckUQW5Ds-1713545178234)]
[外链图片转存中…(img-SSWnJ7rr-1713545178235)]