数据结构与算法
SY_曾开心
只有不断的学习,才能取得进步
展开
-
数据结构-树
树树是一种在实际编程中经常遇到的数据结构。它的逻辑很简单:除了根节点之外每个节点只有一个父节点,根节点没有父节点除了叶节点之外所有节点都有一个或多个子节点,叶节点没有子节点父节点和子节点之间用指针连接二叉树所谓二叉树是一种特殊的结构,在二叉树中每个节点最多只有两个子节点。在二叉树中最重要的操作莫过于遍历,即按照一定顺序访问书中的所有节点。通常树有以下几种遍历翻译 2017-11-20 13:57:37 · 146 阅读 · 0 评论 -
【数据结构】- 遍历二叉树
二叉树的遍历原理二叉树的遍历是指从根节点出发, 按照某种次序以此访问二叉树所有节点,使得每个节点被访问一次且仅被访问一次这里有两个关键词:访问和次序二叉树遍历方法1.前序遍历规则是若二叉树为空,则空操作返回,否则先访问根节点,然后前序遍历左子树,再前序遍历右子树 2.翻译 2018-01-17 15:15:25 · 142 阅读 · 0 评论 -
[数据结构与算法]-算法时间复杂度
算法时间复杂度定义:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间度量,记作:T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。这样用大写的O()来体现算法事翻译 2018-01-07 23:06:05 · 185 阅读 · 0 评论 -
数据结构的基本概念
数据数据:是描述客官事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。-可以输入到计算机中-能被计算机程序处理数据元素数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。数据项数据项:一个数据元素可以由若干个数据项组成。数据项是数据不可分割的最小单位。数据对象数据对象:是性质相同的数据元素的翻译 2018-01-04 17:41:43 · 306 阅读 · 0 评论 -
[链表] - 将单向链表按某值划分成左边小、中间相等、右边大的形式
题目:给定一个单向链表的头结点head,节点的值类型时整型,再给定一个整数pivot实现一个调整链表的函数,将链表调整为左部分都是小于pivot的节点,中间部分都是值等于pivot的节点,右边部分都是大于pivot的节点,出这个要求外,对调整后的节点顺序没有更多的要求进阶:-在原问题的要求智商再增加如下两个要求:在左中右三个部分的内部也做顺序要求,要求每部分的节点从左到翻译 2017-12-19 15:29:28 · 610 阅读 · 0 评论 -
数据结构-栈
栈的定义栈-是限定仅在表尾进行插入和删除操作的线性表允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈,栈又称为后进先出的线性表栈的插入操作,叫做进栈,也称压栈、入栈栈的删除操作,叫做出栈,也有的叫做弹栈栈的抽象数据类型ADT 栈(stack)Data同线性表。元素具有相同的类型,响铃元素具有前驱和后继关系OperationInitS翻译 2018-01-11 16:56:59 · 180 阅读 · 0 评论 -
[链表] - 判断一个链表是否为回文结构
题目:给定链表的头节点,判断该链表是否为会问结构如果链表的长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1)方法一:public class Node{ public int value; public Node next; public Node(int data){ this.value = data; }}public boolean isPal翻译 2017-12-18 12:01:44 · 440 阅读 · 0 评论 -
【链表】- 删除链表的中间节点和a/b处的节点
【题目】给定链表的头节点head,实现删除链表的中间节点的函数给定链表的头节点head,整数a和b,实现删除位于a/b处节点的函数//删除链表的中间节点public class Node{ public int value; public Node next; public Node(int data){ this.value = data; }}public N翻译 2017-12-07 11:45:58 · 221 阅读 · 0 评论 -
[链表] - 反转部分单向链表
题目:给定一个单向链表的头结点head,以及两个整数from和to,在单向链表上把第from个节点到第to个节点这一部分进行反转要求:1、如果链表长度为N,时间复杂度要求为O(N),额外空间复杂度要求为O(1)2、如果不满足1public Node reversePart(Node head,int form, int to){ int len = 0; Nod翻译 2017-12-15 14:47:37 · 227 阅读 · 0 评论 -
[链表]-反转单向和双向链表
题目:分别实现反转单向链表和反转双向链表的函数要求:如果链表长度为N,时间的复杂度要求为O(N),额外空间的复杂度O(1)示例代码://反转单向链表public class Node{ public int value; public Node next; public Node(int data){ this.value = data; }}public翻译 2017-12-15 11:23:33 · 217 阅读 · 0 评论 -
[链表]-在单链表和双链表中删除倒数第K个节点
【题目】分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点。【要求】如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1)。【解答】单链表:public class Node{ public int value; public Node next; public Node(int data){ this.va翻译 2017-12-04 18:01:53 · 187 阅读 · 0 评论 -
栈和堆
一般来说,写程序就是和数据打交道,在执行某一功能的时候,将该功能所需要的数据加载到内存中,然后在执行完毕的时候释放掉该内存。数据在内存中的存放共分为以下几个形式:-栈区(stack)——由编译器自动分配切释放,该区域一般存放函数的参数值,局部变量的值等-堆区(heap)——一般由程序员分配释放,若程序员不释放,程序结束时可由操作系统回收-寄存器区——用来保存栈顶指针和指令指针-翻译 2017-11-21 14:29:37 · 171 阅读 · 0 评论 -
数据结构-树的定义
树的定义树是n个节点的有限集。n=0时,称为空树。在任意一颗非空树中:(1)有且仅有一个特定的称为根的结点;(2)当n>1时,其余结点可分为m个互不相交的有限集,其中每一个集合本身又是一棵树,并且称为根的子树。1.n>0时根结点是唯一的,不可能存在多个根结点2.m>0时,子树的个数没有限制,但它们一定是互不相交的结点的分类:树的结点包含一个数据元素及若干指向其子树的翻译 2018-01-30 15:00:21 · 305 阅读 · 0 评论