随笔分类 - 数据结构与算法
摘要:【树的基本概念】 【二叉树】 任何一个节点的子节点的数量不超过2。 二叉树的子节点分为左节点和右节点。 【满二叉树】 所有的叶子节点在最后一层。 而且节点的总数为2^n-1。 【完全二叉树】 所有叶子节点都在最后一层或者倒数第二层,且最后一层的叶子节点在左边连续,倒数第二节的叶子节点在右边连续。 【
阅读全文
摘要:【简单选择排序】
阅读全文
摘要:【插入排序】 【直接插入排序实例】 【希尔排序】 【实例】
阅读全文
摘要:【8中排序算法一览】 【算法1:冒泡排序】 【冒泡算法实例】 【快速排序算法】 【实例】
阅读全文
摘要:【队列Queue】 队列是只允许在一段进行插入操作,而在另一端进行删除操作的线性表。 队列是一种先进先出(First In First Out)的线性表,简称FIFO。 [ 队尾 ] :允许插入的一端。 [ 队头 ]:允许删除的一端。 【队列的抽象数据模型】
阅读全文
摘要:【链式存储结构】 栈的链式存储结构,简称链栈。 【具体实现】 【测试】 【运行结果】
阅读全文
摘要:【栈的定义】 栈(stack)是限定仅在表尾进行插入和删除操作的线性表。 栈又称为后进先出(Last In First Out)线性表,简称LIFO结构。 (PS:定义中的表尾是指 栈顶!) 【几个关键词 】 [ 栈顶(top) ] 允许插入和删除的一端称为 栈顶。 [ 栈底(bottom) ] 栈
阅读全文
摘要:【为什么设计双向链表】 在单链表中,有了next指针,我们查找下一个结点的复杂度为O(1),但是如果要查找上一个结点,最坏的时间复杂度就是O(n)了,因为每次都需要从头开始遍历查找。 【双线链表(Double Linked List)】 双向链表是在单链表的每个结点中,在设置一个指向其前驱结点的指针
阅读全文
摘要:【思路简述】 看了很多网上的相关java实现单链表的思路,发现很多都没有设置一个头指针,因此,在我的自定义链表类MySingleLinkedList类中的head成员变量即为头指针,head结点其数据域默认为空,其指针域即为头指针,所以判断MySingleLinkedList对象是否为空,要判断其h
阅读全文
摘要:【线性表的链式存储结构的特点】 用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。这就意味着,这些数据元素可以存储在内存未被占用的任意位置。 现在的链式结构,除了要存储数据元素信息之外,还要存储后继元素的存储地址。 【几个重要的名词】 为了表示每个数据元素ai与其
阅读全文
摘要:【线性表的顺序存储从结构】 指的是用一段连续的存储单元一次储存线性表的数据元素。 【线性表的顺序存储的结构代码 C语言版】 【线性表的顺序存储结构需要的三个属性】 1.存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置。 2.线性表的最大存储容量:数组长度MaxSize 3.线性表
阅读全文
摘要:【线性表定义】 线性表(List):0个或多个数据元素的有限序列。 解释:首先,它是一个序列,即元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其它每个元素都有且只有一个前驱和后继。 【用数学语言描述】 所以,线性表的个数n(n>=0)定义为线性表的长度,当n=0时,称为
阅读全文
摘要:【算法定义】 算法是解决特定的问题求解步骤的描述,在计算机中表现为指令的有序序列,并且每条指令表示一个或多个操作。 【算法的特性】 算法的特性主要包括五个:输入、输出、有穷性、确定性、可行性。 【特性一:输入输出】 算法有0个或多个输入。 算法至少有一个或多个输出。 【特性二:有穷性】 算法在执行有
阅读全文