数据结构
文章平均质量分 57
灵魂的价值
这个作者很懒,什么都没留下…
展开
-
单链表,单向循环链表与双向循环链表(LinkedList)实现
动态链表为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需要存储一个指示其直接后继的信息(即直接后继的存储位置)我们把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。指针域中存储的信息称作指针或链。这两部分信息组成数据元素ai的存储映像,称为结点(Node)头结点和头指针头结点是指链表中的第一个结点,有真实头结点和虚拟头结点之分真实头结点:其第一个结点用于存储数据虚拟头结点:其第一个结点不许存储数据头指针:仅仅原创 2022-01-17 18:55:03 · 691 阅读 · 0 评论 -
循环队列与双端队列
ArrayQueue队列的顺序存储结构本身是由ArrayList实现的在数据元素入队的时候,相对于在ArrayList表尾添加元素在数据元素出队的时候,相当于在ArrayList表头删除元素很明显,入队的时间复杂度O(1),出队的时间复杂度为O(n)线性表增删数据元素时间复杂符都是O(n),但是这个是按平均算的队列的出队时间复杂度O(n),可不是按平均算的,因为每次出队都是O(n)循环队列ArrayLoopQueue该循环队列的实现思想也是动态数组但是由于操作元素的特殊性,并不能直接由Ar原创 2022-01-14 19:05:05 · 613 阅读 · 0 评论 -
双端栈与队列
双端栈是指将一个线性表的两端当做栈底分别进行入栈和出栈操作主要利用了栈“栈底位置不变,而栈顶位置动态变化”的特性左栈为空:ltop = -1左栈元素个数:ltop + 1右栈为空:rtop = length右栈元素个数:length – rtop栈满:ltop + 1 = rtopArrayDoubleEndStack类双端栈是线性表的一种,更是栈的一个特殊的分类所以我们可以用动态数组和栈的思想来实现双端栈毕竟由于其操作过于特殊,并不能借助ArrayList或ArrayStack实现原创 2022-01-14 19:01:55 · 221 阅读 · 0 评论 -
后缀计算器
中缀转后缀后缀表达式也叫逆波兰表达式,将运算符写在操作符之后中缀形式:(10+20/2*3)/2+8后缀形式:10 20 2 / 3 * + 2 / 8 +方便计算机计算,但对用户不友好中缀转后缀public class infixToSuffix { public static void main(String[] args) { String expression = "(10+20/2*3)/2+8"; expression = infixToS原创 2022-01-14 18:58:43 · 331 阅读 · 0 评论 -
数据结构与算法线性表的定义与中缀表达式
数据结构主要学习的是什么数据们之间的关系,将离散的数据规整划一如何将这个关系具体实现并存储到计算机中基于关系之上对数据的具体操作,增删改查等数据结构的具体使用场景逻辑结构是指数据元素之间的相互关系,是我们想象出来的,并没有实质性的将其存储在计算机中线性结构: 线性结构中的数据元素之间是一对一的关系树形结构:树形结构中的数据元素之间存在一种一对多的层次关系图形结构:图形结构的数据元素是多对多的关系物理结构是指数据的逻辑结构在计算机中的具体存储形式顺序存储结构:开辟一组连续的空间存储数据原创 2022-01-10 17:02:42 · 452 阅读 · 0 评论