数据结构学习
1、数据项:数据结构中最小单元
2、数据元素:由数据项构成
3、数据结构:带结构的数据元素的集合
4、算法的时间复杂度:由该算法中的核心计算所决定,其时间复杂度T(n) = Nm ,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次)
分享到:
相关推荐
在讨论如何系统高效地学习数据结构与算法之前,首先要弄明白什么是数据结构与算法。广义上讲,数据结构是关于如何组织数据、存储数据的,其目的是为了更高效地访问和修改这些数据。具体来说,数据结构涉及到数组、...
数据结构+编程知识+技术开发+数据结构体系概述,如何学习数据结构课程;数据结构+编程知识+技术开发+数据结构体系概述,如何学习数据结构课程;数据结构+编程知识+技术开发+数据结构体系概述,如何学习数据结构课程...
清华大学出版的,是学习数据结构很经典的一本书!
### 为什么要学习数据结构和算法? #### 一、引言 数据结构与算法是计算机科学的基础,也是软件工程师必备的核心技能之一。对于许多初学者乃至有一定工作经验的开发者来说,可能会疑惑:“为什么我们要学习数据...
本课程“数据结构课件学习数据结构”旨在深入探讨这一主题,帮助学习者奠定坚实的理论基础,并通过实例提升实践能力。 首先,我们来了解一些基本的数据结构类型: 1. **数组**:最简单也是最基础的数据结构,它是...
习题解答部分则提供了实践机会,帮助学习者巩固所学,比如设计合适的数据结构解决实际问题,分析算法的时间复杂度和空间复杂度,以及通过编程实现各种数据结构和算法。 例如,北京化工大学2009~2010秋计科08数据...
数据结构不仅关系到计算机系统软件和应用软件的设计和实现,而且是后续诸多高级课程学习的基础,如操作系统、数据库管理系统、软件工程、编译原理、人工智能和图形学等。数据结构的研究重点在于数据的组织、管理和...
学习数据结构是一个逐步的过程,通常包括理解基本的数据结构概念、实现这些结构以及掌握相关的算法。下面是一个建议的学习路线,可以帮助你系统地学习数据结构: 1. 基础准备 编程语言基础:选择一种编程语言(如 ...
学习数据结构的意义深远,不仅对于初学者提升编程能力至关重要,也是专业程序员进阶必备的知识。 首先,学习数据结构是成为一名有能力进行项目开发的程序员的必经之路。仅仅掌握一种或多种编程语言是远远不够的,...
在数据结构的学习中,高效学习应理解为能够快速且深入地理解知识的内涵,灵活运用所学知识解决问题,并在学习过程中能够减轻记忆负担,提高学习效率。有效学习与学习策略和思维策略的掌握是高效学习数据结构的两大...
总的来说,"零基础学数据结构源代码"是一个全面的学习旅程,从基础概念到高级应用,涵盖了数据结构的各个方面。通过实际编码练习,你可以更好地掌握这些概念,并提升自己的编程技能。无论你是打算从事软件开发、数据...
为了帮助这部分学习者更好地理解和掌握数据结构知识,一款名为“数据结构演示软件”的学习工具应运而生。 这款演示软件的主要目标群体是那些刚接触数据结构的初学者。学习数据结构无疑需要大量的实践和反复的演练,...
这款名为"C语言数据结构学习软件"的工具,显然是为帮助学习者深入理解和实践数据结构而设计的。 首先,我们要明白数据结构的基本类型,包括数组、链表、栈、队列、树、图等。数组是最基础的数据结构,它是一组相同...
学习数据结构与算法的代码示例,目前提供 Java、Python、Go、C++ 多种语言支持 学习数据结构与算法的代码示例,目前提供 Java、Python、Go、C++ 多种语言支持 学习数据结构与算法的代码示例,目前提供 Java、Python...
这个"学习数据结构的全部课件"包含了他的教学精华,覆盖了数据结构的各个方面。 在数据结构的学习中,我们首先会接触到基本概念,如数组、链表、栈和队列。数组是一种最基础的数据结构,提供了随机访问元素的能力;...
《零基础学数据结构》这本书通过C语言来实现各种数据结构,这是一种很好的学习方法,因为C语言的底层特性使得数据结构的实现更为直观。 本书可能涵盖的知识点包括: 1. **数组**:最基础的数据结构,用于存储同...
本课件是一个动态演示数据结构算法执行过程的辅助教学软件, 它可适应读者对算法的输入数据和过程执行的控制方式的不同需求, 在计算机的屏幕上显示算法执行过程中数据的逻辑结构或...对学习数据结构和算法,有极大地帮助
总的来说,"零基础学数据结构C语言代码"这个资源提供了一个良好的起点,让你从零开始学习如何使用C语言实现和操作各种数据结构。通过深入学习和实践,你将能够熟练掌握数据结构和C语言,为未来在算法和系统设计方面...
这个“算法演示软件”是专为学习数据结构设计的工具,对于初学者来说,它提供了直观的可视化方式来理解和实践各种数据结构的操作。 首先,我们来了解一下什么是数据结构。数据结构主要包括数组、链表、栈、队列、树...