![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 87
唯有一片炙热
永远不要停下前进的脚步。
联系方式:
QQ:1534974002
邮箱:xatu_lc@163.com
展开
-
线性表——循环链表(java)
顺序表:https://blog.csdn.net/qq_40301026/article/details/86760317单链表:https://blog.csdn.net/qq_40301026/article/details/86768703双向链表:https://blog.csdn.net/qq_40301026/article/details/86773133循环链表其实就...原创 2019-02-13 15:10:48 · 220 阅读 · 0 评论 -
队列——顺序队列
队列(queue)首先和栈一样是受限制的线性表。主要是仅允许在表的一端进行增加数据,在表的另一端删除数据。队列删除的数据的一端被称为队首(front),增加数据的一端被称为队尾(rear)在队首删除数据叫做出队,在队尾增加数据叫做入队。所以其一大特点是先进先出。 package 队列的实现;pub...原创 2019-02-24 22:25:31 · 168 阅读 · 0 评论 -
队列——链式队列
上一篇是对拿数组对顺序队列的实现。https://blog.csdn.net/qq_40301026/article/details/87908936 主要是链式队列用单链表来实现,说白了还是对单链表的应用。https://blog.csdn.net/qq_40301026/article/details/86768703为了操作实现方便,这里采用带头结点的单链表结构。链表的头部作为队首,...原创 2019-02-26 18:27:28 · 176 阅读 · 0 评论 -
二叉树的层序遍历原理总结
层序遍历也就是从左向右一层一层的遍历,直到结束。下图是一个二叉树,并且层序去遍历如何用代码来实现此算法?核心:利用队列先进后出的特征,先让根结点入队,接着开始循环一下操作,出队,出队的结点左孩子,右孩子入队。直到队列为null下图是对上面二叉树的层序遍历的描述。蓝色数字2到11则是循环的操作。红字是每次循环的具体操作。出队循序就是层序遍历的顺序。树的结点定义:...原创 2019-03-24 21:40:51 · 1254 阅读 · 0 评论 -
二叉树前序中序后序(递归)遍历总结
所谓的前序遍历就是:先遍历根再遍历左子树再遍历右子树,按这个顺序根,左,右遍历直到整个树遍历完。所谓的中序遍历就是:先遍历左子树再遍根再遍历右子树,按这个顺序左,根,右直到整个树遍历完。所谓的中序遍历就是:先遍历左子树再遍右子树再遍根,按这个顺序左,右,根直到整个树遍历完。以此树来详解一下:1. 我们可以把此树先分为根和左子树,右子树(红色圈出来的),根据根,左,右的顺序...原创 2019-03-24 21:40:31 · 397 阅读 · 0 评论 -
二叉树前序、中序、后序遍历非递归写法的透彻解析
对二叉树的非递归遍历有些不熟悉,看了这个博客懂了,很好。https://blog.csdn.net/zgaoq/article/details/79089819在前两篇文章二叉树和二叉搜索树中已经涉及到了二叉树的三种遍历。递归写法,只要理解思想,几行代码。可是非递归写法却很不容易。这里特地总结下,透彻解析它们的非递归写法。其中,中序遍历的非递归写法最简单,后序遍历最难。我们的讨论基础是这样...原创 2019-03-24 22:43:54 · 351 阅读 · 0 评论 -
排序算法总结——交换排序(冒泡排序和快速排序)
1.冒泡排序: 也就是两两相互比较,最终完成排序。package cn.liu.made;/** * 数组两个数字进行交换 * @author Dick * */public class Sort { //交换m和n的值 public static void sort(int[] arr,int m,int n) { int temp = arr[n];...原创 2019-07-01 21:35:25 · 295 阅读 · 0 评论 -
排序算法总结——选择排序(简单选择排序和堆排序)
1.简单选择排序: 选择排序也是一种简单直观的排序算法。它的工作原理很容易理解:初始时在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列;然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 选择排序是不稳定的排序算法,不稳定发生在最小元素与A[i]交换的时刻。 比如序列:{5,8,...原创 2019-07-07 21:17:23 · 333 阅读 · 0 评论 -
栈——链栈
所谓的链栈指的是采用链表为存储结构而实现的栈。根据单链表的操作特征,选择其头部为栈的顶部,此时出栈,入栈都可以在O(1)完成。带头结点的链表,结点的插入和删除都在其头结点之后进行。不带头结点的链表,结点的插入和删除都在其第一个结点出进行。而且栈是操作受限制的单链表,它对单链表的功能进行了阉割。如果对单链表理解透彻,则链栈不在话下。如果对单链表有疑问请看另一篇博客。https...原创 2019-02-23 14:08:09 · 364 阅读 · 0 评论 -
栈——顺序栈
栈又称堆栈,是运行受限的线性表。它只允许在其一端操作。进行操作的一端被称为栈顶(top),另一端被称为栈底(bottom)。其特征为新进的后出,后进先出。根据数组操作的特性,选择数组下标大的一段,即线性表顺序存储的表尾来作为栈顶,此时入栈、出栈等操作可以在O(1)时间完成。由于堆栈的操作都在栈顶完成,因此在顺序栈的实现中需要附设一个指针top来动态的指示栈顶元素在数组中的元素。...原创 2019-02-23 11:10:19 · 290 阅读 · 0 评论 -
树——回顾树的一些基本概念
1.树(tree)是一种数据结构。是n(n>=0)个结点的有限集。生活中的一个家族的族谱便是对树最形象的描述。(1)空树:(n=0)不包含任何子结点。就是空白。例如:a(2)非空树:不是空树。当n>1时,其余结点如果可以分为i(i>0)互不相交的有限集时,其中任何一个有限集便又是一棵树,称为根的子树(sub tree)。例如:c ...原创 2019-02-27 18:01:48 · 134 阅读 · 0 评论 -
单链表
偶然看到,感觉对于我这样首次学习线性表的很好理解,特别是图画的表达,感谢作者。1. 线性表的链式存储结构链式存储:用一组任意的存储单元存储线性表中的数据元素。用这种方法存储的线性表简称线性链表。存储链表中结点的一组任意的存储单元可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。链表中结点的逻辑顺序和物理顺序不一定相同。为了正确表示结点间的逻辑关系,在转载 2017-11-24 18:19:05 · 536 阅读 · 0 评论 -
c语言实现手机通讯录
主要用链表来处理,写完觉的自己对链表的理解和操作都加深了许多,而且设计思路都有很大的提升。主要实现实现了一下功能:void add_contacts(People head);//增加联系人int del_contacts(People head);//删除联系人int seek_contacts(People head);//查找联系人int amend_contacts(People hea...原创 2018-03-06 17:37:27 · 6805 阅读 · 6 评论 -
设a[0:n-1]是已排好序的数组.请改写二分搜索算法,使得当被搜索元素x不在数组中时,返回小于x的最大元素...
主要是对二分法的改写,如果熟悉二分法就非常简单。具体代码如下:#include<stdio.h>#include<stdlib.h>//二分法查找int search(int a[],int length, int x) //a是搜索数组,x为搜索元素{ int i = 0, j = 0; int detection = -1;//标志位...原创 2018-10-16 22:22:54 · 28555 阅读 · 4 评论 -
线性表——顺序表实现(java)
虽然在大二学过一遍数据结构,当时拿c写过一遍。但是现在除了线性表之外好多的都忘得差不多了,利用假期再重温一下,特别是树的内容要好好再学一遍。一是复习一遍加深一下印象,二是借此机会也加强一下敲代码功底。 这次写的是线性表——顺序表的实现。它的存储结构是一个数组: 特点: 再内存中分配连续空间,只存储数据,不需...原创 2019-02-03 18:16:57 · 408 阅读 · 0 评论 -
线性表——单链表(java)
一、单链表是一种链式存取的数据结构。是由若干个结点组成的,每个结点由:元素(数据元素的映象) + 指针(指示后继元素存储位置)两部分组成。需要注意的是结点的地址是随机给定的。在逻辑上可以理解为这样的: 上图是不带头结点的单链表 单链表的一个重要特征就是能从前驱结点找到后继结点。而无法从后继结点找前驱结点。因为这种最...原创 2019-02-06 19:39:33 · 257 阅读 · 0 评论 -
线性表———双向链表(java)
熟悉了单链表后就可以挑战双向链表了,其实都一样。单链表的一个结点有一个指针域,只能指向后继结点,双向链表顾名思义就是双向的,它有两个指针域,一个指向前驱一个指向后驱结点。 单链表只能从头遍历到尾或者从尾遍历到头也就是只能从一边进行(单向)。一个普通结双向链表结点: ...原创 2019-02-07 23:00:29 · 193 阅读 · 0 评论 -
全排列算法递归实现
转载:https://blog.csdn.net/GetterAndSetter/article/details/81516259很简单易懂。转载 2019-08-30 15:27:00 · 95 阅读 · 0 评论