数据结构

数据结构与算法入门

1.序欢迎阅读本教程。本套教程由UDP广播协议叫吃饭编写,面向对计算机编程有一定基础的同学,如果你对计算机完全属于一种小白的状态,建议前往(C语言教程)以及(C++教程)进行基础的学习。本教程IDE采用来自https://sourceforge.net/projects/orwelldevcpp/下载

数学基础

在开始我们数据结构的教程之前,你需要具备以下数学基础知识,这些知识可能不会马上体现在计算机编程中,但是随着学习的深入,这些知识愈发愈用的平凡,于其遇到了再的碎片化,不如我们单独开出一节来单独学习这些数学基础知识注意,我们这里只是简单提及一些公式和原理,

数据结构与算法

请牢记:程序=数据结构+算法1.数据结构发展史1)起源:1968年美国唐•欧•克努特教授开创了数据结构的最初体系,他所著的《计算机程序设计技巧》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构语其操作的著作。我们一般认为本书开创了数据结构的系统概念。

算法基础

1.算法的特性1)输入输出算法具有零个或者多个输入,同时,算法具有至少一个的输出。对于在屏幕上打印”HelloWorld”一样,你可以不需要有任何的输入,直接输出得到结果即可,而对于一个没有输出的算法,没有任何意义。2)确定性算法的每一步都具有确定的含义,无二义性。

数据结构基础

1.基本概念和术语1)数据数据(Data)是信息的载体,是可以被计算机识别,存储并加工处理的描述客观事物的信息符号的总称。数据不仅仅包括了整形,浮点数等数值类型,还包括了字符甚至声音,视频,图像等非数值的类型。2)数据元素数据元素(DataElement)是描述数据的基本单位,也被称为记录。

理解复杂度概念

1.时间空间复杂度定义1)时间复杂度时间复杂度表示一个程序运行所需要的时间,其具体需要在机器环境中才能得到具体的值,但我们一般并不需要得到详细的值,只是需要比较快慢的区别即可,为此,我们需要引入时间频度(语句频度)的概念。时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。

时间复杂度的度量方法

接上文,在理解了时间复杂度的概念后,就可以根据实际的代码进行度量了,以下举例了几个常用的时间复杂度的表示,对于如何度量其最重要的是观察程序中的循环结构,每一个循环结构代表执行循环中的指令n次,而其余指令一般而言一行代码代表执行一次,对于一个程序而言,

程序运行时的内存与地址

1.理解内存在开始数据结构的正式代码编写之前,我们得先熟悉一个计算机中重要的概念——内存,当然这里不是教你如何选购内存条,这里是介绍数据结构学习中必须要掌握的关于内存的基本概念。首先请看这么一张图:(地址的常用表示为十六进制表示法,即Ox+十六进制数)由这个图可以清晰的发现对于每一段的内存中的数据,

编程预备

两个必备的函数知识(其均来自于stdlib.h库中)1.Malloc函数malloc()函数在堆中申请分配一个大小为size个字节的连续内存空间,若成功分配,则返回一个指向所分配空间起始地址的指针,否则返回空指针(NULL)。2.Free函数free()函数用来释放已分配的内存空间,

顺序存储和链式存储

1.再谈数组—顺序存储我们在开始计算机课程没多久后就已经知晓了数组的概念,数组作为一个顺序储存方式数据结构为我们的程序设计带来了大量的便利,几乎任何的高级程序设计,算法设计都离不开数组的灵活使用,但是,数组最大的缺点就是我们的插入和删除时需要移动大量的元素,显然这需要消耗大量的时间。