`
阳韵圣
  • 浏览: 60373 次
  • 性别: Icon_minigender_1
  • 来自: 烟台
文章分类
社区版块
存档分类
最新评论

学习数据结构

 
阅读更多

数据结构学习

 

1、数据项:数据结构中最小单元

2、数据元素:由数据项构成

3、数据结构:带结构的数据元素的集合

4、算法的时间复杂度:由该算法中的核心计算所决定,其时间复杂度T(n) = N,N为计算次数,m为核心计算循环(重复操作)次数。

一般而言算法的时间复杂度与问题规模与算法所采用策略有关,同一个问题,采用不同的算法策略其时间复杂度有可能不同,例如:排序(冒泡排序与插入排序)

算法的空间复杂度

 

线性表的特点:1、集合中必须存在唯一的一个“第一元素”

     2、集合中必须存在唯一的一个“最后元素”

     3、除第一元素之外其他每个元素有且只有唯一的一个前驱元素

     4、除最后元素之外其他每个元素有且只有唯一的一个后继元素

 

线性表的顺序表示:

特点:用一组地址连续的存储单元存储,相邻两元素之间其物理地址相邻,方便查询,插入与删除数据则比较麻烦,长度固定。

线性表的链式表示:

特点:地址任意,通过使用数据+地址的节点序列来表示线性表,不方便查询,插入与删除数据则比较方便,长度不固定。

 

单链表、双向链表、循环链表

 

 

求两个正整数的最大公约数:

 

	//求最大公约数,现设a>b
	public int big(int a,int b){
		int c = a % b;
		while(c!=0){
			a = b;
			b = c;
			c = a % b;
		}
		return b;
	}

 求两个正整数的最小公倍数:

 

	//求最小公倍数
	public int small(int a,int b){
		int c = a * b;
		while(a!=b){
			if(a>b){
				a = a - b;
			}else{
				b = b - a;
			}
		}
		c = c / a;
		return c;
	}

   //已知长度为n的线性表A采用顺序存储结构,请写一算法,找出该线性表中值最小的数据元素。

	public double lineSmall(double[] line){
		double m = 0;
		if(line.length>0){
			m = line[0];
			for(int i=0;i<line.length;i++){
				if(m>line[i]){
					m = line[i];
				}
			}
		}else{
			//抛出异常
		}
		return m;
	}

 

 

栈与队列:

栈:先进后出,只能从队尾进栈或出栈。

队列:先进先出,从队尾进栈,从队首出栈。

 

 

树:

只有一个根节点,树结构可以通过递归来表示(树是由子树所构成,子树是由更小的子树所构成。。。。。)。

一个节点子树的个数称为该节点的次数或该节点的度;树中各节点的次数最大值称为该树的次数。

假设树T为一棵m次数,该树中非叶子节点的次数都为m,那么称T为一棵m次完全树。

二叉树:节点(包括根节点)可以为空,一个节点最多只有两个分支节点(左子树、右子树)。

二叉树第k层,其节点个数n<=2k-1

深度为h的二叉树,其节点个数n<=2k-1

对于任意一棵二叉树,若它含有n1个叶子节点,n2个度为2的节点,则:n1 = n2 + 1(树的分支个数与节点度数以及节点个数的关系)

满二叉树:深度为k且有2k-1个节点个数的二叉树。

完全二叉树:树中所含n各节点与满二叉树中编号为1至n的节点一一对应。(即完全二叉树包含满二叉树,若完全二叉树不为满二叉树时,其1至k-1层为满二叉树,第k层中由左至右依次填充)

 

二叉树的遍历:

前序遍历:先访问根节点

 

中序遍历:第二次路过时访问根节点

 

后序遍历:最后访问根节点

(二叉树的遍历过程中每个子节点都可视为根节点,在探测其是否有左右子树并返回的过程中共经过所探测节点3次)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    学习数据结构的软件学习数据结构的软件 和好用的 真的利于学习 算法和数据结构 希望大家看看 好好看吧 些的够多的了不说

    学习数据结构的软件 和好用的 真的利于学习 算法和数据结构 希望大家看看 好好看吧 些的够多的了不说学习数据结构的软件 和好用的 真的利于学习 算法和数据结构 希望大家看看 好好看吧 些的够多的了不说学习数据结构...

    编程知识+技术开发+数据结构体系概述,如何学习数据结构课程

    数据结构+编程知识+技术开发+数据结构体系概述,如何学习数据结构课程;数据结构+编程知识+技术开发+数据结构体系概述,如何学习数据结构课程;数据结构+编程知识+技术开发+数据结构体系概述,如何学习数据结构课程...

    数据结构,学习数据结构很经典的一本书

    清华大学出版的,是学习数据结构很经典的一本书!

    为什么要学习数据结构和算法?.pdf

    ### 为什么要学习数据结构和算法? #### 一、引言 数据结构与算法是计算机科学的基础,也是软件工程师必备的核心技能之一。对于许多初学者乃至有一定工作经验的开发者来说,可能会疑惑:“为什么我们要学习数据...

    数据结构演示系统,是学习数据结构不错的演示系统

    数据结构演示系统是一种交互式的教学工具,旨在帮助学习者深入理解各种数据结构的工作原理及其应用。通过这样的系统,用户可以直观地观察到数据结构的动态变化,从而更好地掌握其内在逻辑。 首先,数据结构包括线性...

    学习数据结构的意义与作用

    学习数据结构的意义在于,它为理解和解决复杂计算问题提供了基础,特别是面对非数值计算问题时,数据结构的重要性更为凸显。 首先,数据结构是计算机科学与技术、计算机信息管理等专业不可或缺的基础课程。它涵盖了...

    学习数据结构的意义和作用.pdf

    数据结构不仅关系到计算机系统软件和应用软件的设计和实现,而且是后续诸多高级课程学习的基础,如操作系统、数据库管理系统、软件工程、编译原理、人工智能和图形学等。数据结构的研究重点在于数据的组织、管理和...

    学习数据结构路线.docx

    学习数据结构是一个逐步的过程,通常包括理解基本的数据结构概念、实现这些结构以及掌握相关的算法。下面是一个建议的学习路线,可以帮助你系统地学习数据结构: 1. 基础准备 编程语言基础:选择一种编程语言(如 ...

    高效学习数据结构.doc

    高效学习数据结构不仅关乎理解各种数据结构(如线性结构、树型结构、图型结构)和算法(如查找、排序),更包括掌握有效的学习策略和思维模式。 在高效学习数据结构的过程中,首要任务是熟悉课程大纲,明确学习路径...

    零基础学数据结构源代码

    总的来说,"零基础学数据结构源代码"是一个全面的学习旅程,从基础概念到高级应用,涵盖了数据结构的各个方面。通过实际编码练习,你可以更好地掌握这些概念,并提升自己的编程技能。无论你是打算从事软件开发、数据...

    一个北大学生学习数据结构的经验.pdf

    数据结构学习经验总结 数据结构是计算机科学中的一门基础课程,对于学习计算机科学的学生来说,数据结构是非常重要的一门课。作者通过分享自己的学习经验,想要告诉我们学习数据结构需要注意的一些重要点。 首先,...

    零基础学数据结构

    总的来说,“零基础学数据结构”意味着你需要从基础开始,逐步建立对各种数据结构的理解,学习它们的实现方式,以及如何根据具体问题选择合适的数据结构。这是一个持续学习和实践的过程,只有不断深入,才能真正掌握...

    学习数据结构与算法的代码示例,目前提供 Java、Python、Go、C++ 多种语言支持.zip

    学习数据结构与算法的代码示例,目前提供 Java、Python、Go、C++ 多种语言支持学习数据结构与算法的代码示例,目前提供 Java、Python、Go、C++ 多种语言支持学习数据结构与算法的代码示例,目前提供 Java、Python、...

    学习数据结构和算法.zip

    这个名为“学习数据结构和算法.zip”的压缩包很可能包含了各种资源,如教程、代码示例、练习题等,帮助学习者深入理解和掌握这些核心概念。 首先,我们要理解数据结构是什么。数据结构是指在计算机中组织和存储数据...

    学习数据结构的意义和作[归类].pdf

    学习数据结构的意义在于理解和优化数据的存储方式,这对于设计高效算法和编写高质量的软件至关重要。 首先,数据结构是计算机科学的基础。在软件网络技术领域,无论是操作系统、数据库管理系统还是各种应用软件,都...

    学习数据结构的全部课件

    这个"学习数据结构的全部课件"包含了他的教学精华,覆盖了数据结构的各个方面。 在数据结构的学习中,我们首先会接触到基本概念,如数组、链表、栈和队列。数组是一种最基础的数据结构,提供了随机访问元素的能力;...

Global site tag (gtag.js) - Google Analytics