基本数据结构链表与数组

链表与数组

数组,在内存上是连续的空间;链表,在内存上可以不连续,每个链表节点包括数据可其他节点的地址信息。
数组优点:

内存空间占有少,因为链表节点保存其他节点的信息。
数组内的数据是随机访问的,数据查找速度快
链表优点:

数组需要连续内存空间,在数组过大时可能引起内存不足的问题,链表则不需要大块连续内存
插入删除操作方便,不需要移动数据
数组一旦创建便不能改变容量,而链表可以
堆、栈(堆栈)、队列



堆通常是一个可以被看做一棵树的数组对象。堆的特点是父子节点有序、完全二叉树。
父节点总大于其子节点的堆被称为大根堆,反之为小根堆。
堆在程序运行时生成,而不是编译时生成,是动态进行内存分配的。是程序中申请的动态内存的特殊数据结构
程序员申请释放,系统也可以释放
二级缓存中,JVM垃圾回收释放



又名堆栈,是一种运算受限的线性表。仅允许在一端进行插入删除运算,通常称为栈顶,另一端称为栈底。
先进后出原则
编译时指定栈的大小,之后不可更改。
是操作系统建立线程时建立的存储区域,具有FILO的特性。由操作系统自动分配释放。
一级缓存,用完即释放
PUSH(),POP()


队列
特殊的线性表,只允许前端删除,后端插入。分布被称为队头队尾。
没有元素时,称为空队列
队列可以使用数组和链表的方式实现,需要头指针和尾指针进行辅助使用,分别指向出队元素和入队元素。
FIFO原则
链表的删除,插入,反向


链表的删除
遍历链表寻找待删除数据节点cur的前置节点pre
删除操作就是将前置节点的下一个节点地址指向待删除的下一个节点。
pre.next=cur.next
删除时注意头节点问题


链表的插入
遍历链表寻找待插入数据节点cur的前置节点pre
cur.next=pre.next; pre.next=cur
注意头节点问题


链表的反向
链表逆序输出的方法:

遍历链表将数据记录在数组中,数组反向遍历
使用栈逆序输出
逆序链表在输出

猜你喜欢

转载自blog.csdn.net/weixin_43146461/article/details/82626856