EDA基础知识总结

设计过程中的仿真有三种:行为仿真、功能仿真、时序仿真

数字系统的两个模块(子系统):数据处理子系统、控制子系统

数据处理子系统主要完成数据的采集、存储、运算、传输,主要由存储器、运算器、数据选择器等功能电路组成。

数字系统设计方法:模块设计方法、自顶向下设计法、自底向上设计法。一般采用自顶向下、由粗到细、逐步求精的方法。

数字系统的设计准则:1)分割准则2)系统的可观测性3)同步和异步电路4)最优化设计5)系统设计的艺术

数字系统的设计步骤:1)系统任务分析2)确定逻辑算法3)建立系统及子系统模型4)系统(或模块)逻辑描述5)逻辑电路级设计及系统仿真6)系统的物理实现

VHDL语言要素:数据对象、数据类型、各类操作数及运算操作符

标识符规则:以英文字母开头,不连续使用下划线“_”,不以下划线结尾的,由26个大小写英文字母、数字0~9及下划线“_”组成的字符串,英文字母不区分大小写,VHDL的保留字不能用于作为标识符使用。

在进程中,只能将信号列到敏感表,而不能将变量列入敏感表。可见进程对信号敏感

VHDL中的数据类型:标量型(包括:实数型、整数型、枚举型、时间类型)、复合类型(数组型、记录型)、存取型、文件类型

VHDL四大类数据类型又可分为两类:预定义数据类型、用户自定义数据类型(基于预定义数据类型)

预定义数据类型:1)布尔型2)位数据类型(BIT)3)位矢量(BIT_VECTOR)4)字符型5)整数型6)自然数和正整数型7)实数型8)字符串型9)时间型10)错误等级

数据类型:标准逻辑位STD_LOGIC、标准逻辑矢量STD_LOGIC_VECTOR

VHDL中六类基本顺序语句:赋值语句、转向控制语句、等待语句、子程序调用语句、返回语句、空操作语句。

在信号赋值时,当统一进程中,同一信号赋值目标有多个赋值源时,信号赋值目标获得的是最后一个赋值,其前面相同的赋值目标则不作任何变化。

转向控制语句五种:IF语句、CASE语句、LOOP语句、NEXT语句、EXIT语句

当执行WAIT等待语句,程序将被挂起,知道满足结束条件后,程序重新开始执行。已列出敏感量的进程不能使用任何形式的WAIT语句

过程调用:执行一个给定名字和参数的过程

过程名[([形参名=>] 实参表达式 {,[形参名=>]实参表达式})];过程调用步骤:1)将IN和INOUT的形参值赋给调用过程中与之对应的形参;2)执行这个过程;3)将过程中IN和INOUT的形参值赋给对应的实参

函数调用:返还一个指定数据类型的值,函数的参量只能是输入值

任何时刻,一个对象(信号、常量、变量)只有一个值,但可有多个属性

预定义属性描述:属性测试项目名’属性标识符

CLOCK’EVENT AND CLOCK=’1’对上升沿的测试(或者NOT(CLOCK’STABLE AND CLOCK=’1’))

CLOCK’EVENT AND CLOCK=’0’对下降沿的测试(或者CLOCK’STABLE AND CLOCK=’0’)

并行语句在结构体中的执行是同步的。每一并行语句内部的语句运行方式:并行执行、顺序执行。结构体中并行语句有七种:1)并行信号赋值语句2)进程语句3)块语句4)条件信号赋值语句5)元件例化语句6)生成语句7)并行过程调用语句

PROCESS中规定了每个进程语句在它的摸个敏感信号的值改变时都必须立即完成某个功能行为。进程的激活必须由敏感信号表中定义的敏感信号的变化来启动,否则必须有一个显示的WAIT语句激活

并行信号赋值语句包括:简单信号赋值语句、条件信号赋值语句、选择信号赋值语句

简单信号赋值语句:信号赋值语句<=表达式;

条件信号赋值语句:赋值目标<=表达式  WHEN  赋值条件  ELSE

(类似于IF语句)           表达式  WHEN  赋值条件  ELSE

……

表达式;

选择信号赋值语句:WITH 选择表达式 SELECT

(类似于CASE语句)赋值目标<=表达式  WHEN  选择值,

表达式  WHEN  选择值,

……

表达式  WHEN  选择值;

元件例化是使VHDL设计实体构成自上而下层次化设计的一个重要途径。组成部分:1)将一个现成的设计实体定义为一个元件的语句;2)此元件与当前设计实体中的连接说明

元件例化语句中定义的例化元件的端口名与当前系统的连接实体端口名的接口表达式表达有两种方式:1)名字关联方式:通过“=>”一一对应2)位置关联方式:按例化元件端口的定义顺序将例化元件的对应的连接实体端口名一一列出

生成语句有一种复制功能。生成语句的四个组成部分:生成方式、说明部分、并行语句、标号。

子程序是利用顺序语句来定义和完成算法的。只能通过子程序调用及与子程序的界面端口进行通信。包括过程(可单独存在,多个返回值,有输入/出双向参数)和函数(作为语句的一部分调用,一个返回值,所有参数都是输入参数),可在VHDL的结构体或程序包中任何位置调用子程序。

子程序特性:可重载性,即允许有许多重名的子程序,但这些子程序的参数类型及返回值数据类型不同

函数组成:函数首(作用:作为程序包的有关此函数的一个接口界面)、函数体

重载函数:VHDL允许相同的函数名定义函数,但要求函数中定义的操作数具有不同的数据类型。

过程组成部分:过程首、过程体。过程首不是必须的,过程体可以独立存在和使用

过程首参数表用于对常数、变量、信号三类数据对象目标作出说明,并用IN、OUT、INOUT定义参数工作模式(信息流向)

一般把EDA技术的发展分为CADCAEEDA三个阶段。

EDA设计流程包括设计准备、设计输入、设计处理、器件编程四个步骤.

EDA的设计验证包括功能仿真、时序仿真、器件测试三个过程

EDA的设计输入包括文本输入方式、图形输入方式、波形输入方式三个过程

当前最流行的并成为IEEE标准的硬件描述语言包括VHDL 语言Verilog HDL 语言

将硬件描述语言转化为硬件电路的重要工具软件称为HDL 综合器

基于EPROM、E2PROM和快闪存储器件的可编程器件,在系统断电后编程信息不丢失

基于SRAM结构的可编程器件,在系统断电后编程信息 会丢失

CPLD器件中至少包括可编程逻辑宏单元、可编程 I/O 单元、可编程内部连线三种结构

FPGA的三种可编程电路分别是可编程逻辑块 CLB、输入/输出模块 IOB、互连资源三种结构

根据逻辑功能块的大小不同,可将FPGA(可编程逻辑器件)分为细密度、粗密度两类;据FPGA内部连线结构的不同,可将FPGA分为分段互连型、连续互连型两类;据FPGA采用的开关元件不同,可将FPGA分一次编程型(OTP)、可重复编程型(MTP)两类

目前常见的可编程逻辑器件的编程和配置工艺包括电可擦存储单元的 E2PROM Flash 技术、SRAM 查找表的编程单元、反熔丝编程单元三种编程工艺。

VHDL设计实体的基本结构由库、程序包使用说明设计实体的说明结构体说明配置 等部分组成

实体、结构体是设计实体的基本组成部分,他们可以构成最基本的VHDL程序

在VHDL的端口声明语句中,端口方向包括in  out  buffer  inout

VHDL的数据对象包括常 constant、变量 variable、信号 signal它们是用来存放各种类型数据的容器

VHDL的操作符包括逻辑操作符、关系操作符、算术操作符、符号操作符

VHDL的顺序语句只能出现在进程 process、函数 function、过程 procedure,按照书写顺序自上而下,一条一条执行。

VHDL的进程(process)语句是由 顺序语句 组成的,但其本身却是 并行语句

Maxplus  Ⅱ支持图形、符号、文本、波形等不同编辑方式

指定设计电路的输入/输出端口与目标芯片引脚的连接关系的过程称为引脚锁定

在完成设计电路的输入/输出端口与目标芯片引脚的锁定后,再次对设计电路的仿真称时序仿真或后仿真

图形文件设计结束后一定要通过  仿真 ,检查设计文件是否正确

以EDA方式设计实现的电路设计文件,最终偶可以编程下载到 FPGA CPLD 芯片中,完成硬件设计和验证

MAX+PLUS的文本文件类型是(后缀名) .VHD

在PC上利用VHDL进行项目设计,不允许在  根目录  下进行,不惜在根目录为设计建立一个工程目录(文件夹)

VHDL源程序的文件名应与 实体名 相同,否则无法通过编译

EDA 名词解释

1.CPLD: 复杂可编程逻辑器件 2.HDL:硬件描述语言

3.LUT:查找表(Look-Up-Table) 4.ASIC:专用集成电路

5.SOC:单芯片系统        6.VHDL:超高速硬件描述语言

7.FPGA:现场可编程门阵列    8.RTL:寄存器传输级

9.SOPC:可编程片上系统      10.EAB:嵌入式阵列块

11.LAB:逻辑阵列块       12.IP:知识产权核

13.EDA:电子设计自动化       14.IEEE:美国电气电子工程师协会

15.ISP:在系统编程       16.LPM:参数可定制红模块库

17.UART:串口(通用异步触发器)  

18.元件例化:将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。

19.简要解释 JTAG,指出 JTAG 的用途:JTAG:联合测试行动小组的简称,又意指其提出的一种硬件测试标准,常用于器件测试、编程下载和配置等操作。

 

第二篇:EDA基础知识总结

VHDL有如下特点:①支持从系统级到逻辑门级电路的描述;②具有很强的硬件描述能力;③设计技术齐全、方法灵活、支持广泛;④对设计描述具有相对的独立性;⑤具有很强的移植能力;⑥易于共享和复用;⑦具有丰富的仿真语句和库函数;⑧设计结构清晰、易读易懂;⑨易实现系统的更新和升级;⑩数据类型丰富、安全性好。

VHDL语言中常用的五种库:1)IEEE库:VHDL语言设计中最常见的库。2) STD库:VHDL语言的标准库3) WORK库:用户的VHDL语言工作库。4)VITAL库: VHDL语言的时序仿真库

5)用户自定义的库:用户自定义的资源库

变量的使用规则:① 变量不能用于硬件连线和存储元件;② 变量赋值和初始化赋值都用“:=”表示;③ 变量的初值不是预设的,某一时刻只能有一个值;④ 变量不能用于在进程间传递数据;⑤ 仿真时,变量用于建模;⑥ 综合时,变量充当数据的暂存。

信号与变量的区别:①使用场合不同:变量在进程、函数和过程中说明;信号在结构体中说明。②赋值符号不同:变量用“:=”号赋值, 其值被立即使用(无时间延时);信号用“<=”赋值,其值可以附加延时。

VHDL语言预定义了五种运算符:逻辑运算符、算术运算符、关系运算符、符号运算符、移位运算符

主要的三家公司:Xilinx、Altera、Lattice

EDA软件系统包括子模块:设计输入子模块、设计数据库子模块、分析验证子模块、综合仿真子模块、布局布线子模块。

电子系统设计的仿真过程分为两个阶段:设计前期的系统级仿真和设计过程的电路级仿真。(系统仿真主要验证系统的功能;电路级仿真主要验证系统的性能,决定怎样实现设计所需的精度。)

设计过程中的仿真有三种:行为仿真、功能仿真、时序仿真

数字系统的两个模块(子系统):数据处理子系统、控制子系统

数据处理子系统主要完成数据的采集、存储、运算、传输,主要由存储器、运算器、数据选择器等功能电路组成。

数字系统设计方法:模块设计方法、自顶向下设计法、自底向上设计法。一般采用自顶向下、由粗到细、逐步求精的方法。

数字系统的设计准则:1)分割准则2)系统的可观测性3)同步和异步电路4)最优化设计5)系统设计的艺术

数字系统的设计步骤:1)系统任务分析2)确定逻辑算法3)建立系统及子系统模型4)系统(或模块)逻辑描述5)逻辑电路级设计及系统仿真6)系统的物理实现

VHDL语言要素:数据对象、数据类型、各类操作数及运算操作符

标识符规则:以英文字母开头,不连续使用下划线“_”,不以下划线结尾的,由26个大小写英文字母、数字0~9及下划线“_”组成的字符串,英文字母不区分大小写,VHDL的保留字不能用于作为标识符使用。

在进程中,只能将信号列到敏感表,而不能将变量列入敏感表。可见进程对信号敏感。 VHDL中的数据类型:标量型(包括:实数型、整数型、枚举型、时间类型)、复合类型(数组型、记录型)、存取型、文件类型

VHDL四大类数据类型又可分为两类:预定义数据类型、用户自定义数据类型(基于预定义数据类型)

预定义数据类型:1)布尔型2)位数据类型(BIT)3)位矢量(BIT_VECTOR)4)字符型5)整数型

6)自然数和正整数型7)实数型8)字符串型9)时间型10)错误等级

数据类型:标准逻辑位STD_LOGIC、标准逻辑矢量STD_LOGIC_VECTOR

VHDL中六类基本顺序语句:赋值语句、转向控制语句、等待语句、子程序调用语句、返回语句、空操作语句。

在信号赋值时,当统一进程中,同一信号赋值目标有多个赋值源时,信号赋值目标获得的是最后一个赋值,其前面相同的赋值目标则不作任何变化。

转向控制语句五种:IF语句、CASE语句、LOOP语句、NEXT语句、EXIT语句

当执行WAIT等待语句,程序将被挂起,知道满足结束条件后,程序重新开始执行。已列出敏感量的进程不能使用任何形式的WAIT语句

过程调用:执行一个给定名字和参数的过程

过程名[([形参名=>] 实参表达式 {,[形参名=>]实参表达式})];过程调用步骤:1)将IN和INOUT的形参值赋给调用过程中与之对应的形参;2)执行这个过程;3)将过程中IN和INOUT的形参值赋给对应的实参

函数调用:返还一个指定数据类型的值,函数的参量只能是输入值

任何时刻,一个对象(信号、常量、变量)只有一个值,但可有多个属性

预定义属性描述:属性测试项目名’属性标识符

CLOCK’EVENT AND CLOCK=’1’对上升沿的测试(或者NOT(CLOCK’STABLE AND CLOCK=’1’)) CLOCK’EVENT AND CLOCK=’0’对下降沿的测试(或者CLOCK’STABLE AND CLOCK=’0’) 并行语句在结构体中的执行是同步的。每一并行语句内部的语句运行方式:并行执行、顺序执行。结构体中并行语句有七种:1)并行信号赋值语句2)进程语句3)块语句4)条件信号赋值语句5)元件例化语句6)生成语句7)并行过程调用语句

PROCESS中规定了每个进程语句在它的摸个敏感信号的值改变时都必须立即完成某个功能行为。进程的激活必须由敏感信号表中定义的敏感信号的变化来启动,否则必须有一个显示的WAIT语句激活

并行信号赋值语句包括:简单信号赋值语句、条件信号赋值语句、选择信号赋值语句 简单信号赋值语句:信号赋值语句<=表达式;

条件信号赋值语句:赋值目标<=表达式 WHEN 赋值条件 ELSE

(类似于IF语句) 表达式 WHEN 赋值条件 ELSE

??

表达式;

选择信号赋值语句:WITH 选择表达式 SELECT

(类似于CASE语句)赋值目标<=表达式 WHEN 选择值,

表达式 WHEN 选择值,

??

表达式 WHEN 选择值;

元件例化是使VHDL设计实体构成自上而下层次化设计的一个重要途径。组成部分:1)将一个现成的设计实体定义为一个元件的语句;2)此元件与当前设计实体中的连接说明

元件例化语句中定义的例化元件的端口名与当前系统的连接实体端口名的接口表达式表达有两种方式:1)名字关联方式:通过“=>”一一对应2)位置关联方式:按例化元件端口的定义顺序将例化元件的对应的连接实体端口名一一列出

生成语句有一种复制功能。生成语句的四个组成部分:生成方式、说明部分、并行语句、标号。

子程序是利用顺序语句来定义和完成算法的。只能通过子程序调用及与子程序的界面端口进行通信。包括过程(可单独存在,多个返回值,有输入/出双向参数)和函数(作为语句的一部分调用,一个返回值,所有参数都是输入参数),可在VHDL的结构体或程序包中任何位置调用子程序。

子程序特性:可重载性,即允许有许多重名的子程序,但这些子程序的参数类型及返回值数据类型不同

函数组成:函数首(作用:作为程序包的有关此函数的一个接口界面)、函数体

重载函数:VHDL允许相同的函数名定义函数,但要求函数中定义的操作数具有不同的数据类型。

过程组成部分:过程首、过程体。过程首不是必须的,过程体可以独立存在和使用

过程首参数表用于对常数、变量、信号三类数据对象目标作出说明,并用IN、OUT、INOUT定义参数工作模式(信息流向)

一般把EDA技术的发展分为CAD、CAE、EDA三个阶段。

EDA设计流程包括设计准备、设计输入、设计处理、器件编程四个步骤.

EDA的设计验证包括功能仿真、时序仿真、器件测试三个过程

EDA的设计输入包括文本输入方式、图形输入方式、波形输入方式三个过程

当前最流行的并成为IEEE标准的硬件描述语言包括VHDL 语言、Verilog 和 HDL 语言 将硬件描述语言转化为硬件电路的重要工具软件称为HDL 综合器

基于EPROM、E2PROM和快闪存储器件的可编程器件,在系统断电后编程信息不丢失

基于SRAM结构的可编程器件,在系统断电后编程信息 会丢失

CPLD器件中至少包括可编程逻辑宏单元、可编程 I/O 单元、可编程内部连线三种结构

FPGA的三种可编程电路分别是可编程逻辑块 CLB、输入/输出模块 IOB、互连资源三种结构 根据逻辑功能块的大小不同,可将FPGA(可编程逻辑器件)分为细密度、粗密度两类;据FPGA内部连线结构的不同,可将FPGA分为分段互连型、连续互连型两类;据FPGA采用的开关元件不同,可将FPGA分一次编程型(OTP)、可重复编程型(MTP)两类

目前常见的可编程逻辑器件的编程和配置工艺包括电可擦存储单元的 E2PROM 或 Flash 技术、SRAM 查找表的编程单元、反熔丝编程单元三种编程工艺。

VHDL设计实体的基本结构由库、程序包使用说明、设计实体的说明、结构体说明、配置 等部分组成 实体、结构体是设计实体的基本组成部分,他们可以构成最基本的VHDL程序

在VHDL的端口声明语句中,端口方向包括in out buffer inout

VHDL的数据对象包括常数 constant、变量 variable、信号 signal它们是用来存放各种类型数据的容器

VHDL的操作符包括逻辑操作符、关系操作符、算术操作符、符号操作符

VHDL的顺序语句只能出现在进程 process、函数 function、过程 procedure中,按照书写顺序自上而下,一条一条执行。

VHDL的进程(process)语句是由 顺序语句 组成的,但其本身却是 并行语句

Maxplus Ⅱ支持图形、符号、文本、波形等不同编辑方式

指定设计电路的输入/输出端口与目标芯片引脚的连接关系的过程称为引脚锁定

在完成设计电路的输入/输出端口与目标芯片引脚的锁定后,再次对设计电路的仿真称时序仿真或后仿真

图形文件设计结束后一定要通过 仿真 ,检查设计文件是否正确

以EDA方式设计实现的电路设计文件,最终偶可以编程下载到 FPGA 和 CPLD 芯片中,完成硬件设计和验证

MAX+PLUS的文本文件类型是(后缀名) .VHD

在PC上利用VHDL进行项目设计,不允许在 根目录 下进行,不惜在根目录为设计建立一个工程目录(文件夹)

VHDL源程序的文件名应与 实体名 相同,否则无法通过编译

EDA 名词解释

1.CPLD: 复杂可编程逻辑器件 2.HDL: 硬件描述语言

3.LUT:查找表(Look-Up-Table) 4.ASIC:专用集成电路

5.SOC:单芯片系统 6.VHDL:超高速硬件描述语言

7.FPGA:现场可编程门阵列 8.RTL:寄存器传输级

9.SOPC:可编程片上系统 10.EAB:嵌入式阵列块

11.LAB:逻辑阵列块 12.IP:知识产权核

13.EDA:电子设计自动化 14.IEEE:美国电气电子工程师协会

15.ISP:在系统编程 16.LPM:参数可定制红模块库

17.UART:串口(通用异步触发器)

18.元件例化:将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当

前的设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。

19.简要解释 JTAG,指出 JTAG 的用途:JTAG:联合测试行动小组的简称,又意指其提出的一种硬件测试标准,常用于器件测试、编程下载和配置等操作。

 

第三篇:C语言公共基础知识总结(不容错过)

C语言公共基础知识总结

公共基础知识总结

第一章数据结构与算法

1.1 算法

算法:是指解题方案的准确而完整的描述。

算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。 算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括:

(1)可行性;

(2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性;

(3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义;

(4)拥有足够的情报。

算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 指令系统:一个计算机系统能执行的所有指令的集合。

基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 算法的控制结构:顺序结构、选择结构、循环结构。

算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。 算法复杂度:算法时间复杂度和算法空间复杂度。

算法时间复杂度是指执行算法所需要的计算工作量。

算法空间复杂度是指执行这个算法所需要的内存空间。

1.2 数据结构的基本基本概念

数据结构研究的三个方面:

(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;

(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;

(3)对各种数据结构进行的运算。

数据结构是指相互有关联的数据元素的集合。

数据的逻辑结构包含:

(1)表示数据元素的信息;

(2)表示各数据元素之间的前后件关系。

数据的存储结构有顺序、链接、索引等。

线性结构条件:

(1)有且只有一个根结点;

(2)每一个结点最多有一个前件,也最多有一个后件。

非线性结构:不满足线性结构条件的数据结构。

1.3 线性表及其顺序存储结构

线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。

在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。

非空线性表的结构特征:

(1)且只有一个根结点a1,它无前件;

(2)有且只有一个终端结点an,它无后件;

(3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。

线性表的顺序存储结构具有以下两个基本特点:

(1)线性表中所有元素的所占的存储空间是连续的;

(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。

ai的存储地址为:ADR(ai)=ADR(a1)+(i-1)k,,ADR(a1)为第一个元素的地址,k代表每个元素占的字节数。

顺序表的运算:插入、删除。 (详见14--16页)

1.4 栈和队列

栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。

栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据,栈具有记忆作用。用top表示栈顶位置,用bottom表示栈底。

栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算;(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。

队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。Rear指针指向队尾,front指针指向队头。

队列是“先进行出”(FIFO)或“后进后出”(LILO)的线性表。

队列运算包括(1)入队运算:从队尾插入一个元素;(2)退队运算:从队头删除一个元素。

循环队列:s=0表示队列空,s=1且front=rear表示队列满

1.5 线性链表

数据结构中的每一个结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。

结点由两部分组成:(1)用于存储数据元素值,称为数据域;(2)用于存放指针,称为指针域,用于指向前一个或后一个结点。

在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。

链式存储方式即可用于表示线性结构,也可用于表示非线性结构。

线性链表,HEAD称为头指针,HEAD=NULL(或0)称为空表,如果是两指针:左指针(Llink)指向前件结点,右指针(Rlink)指向后件结点。

线性链表的基本运算:查找、插入、删除。

1.6 树与二叉树

树是一种简单的非线性结构,所有元素之间具有明显的层次特性。

在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点,简称树的根。每一个结点可以有多个后件,称为该结点的子结点。没有后件的结点称为叶子结点。

在树结构中,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度。树的最大层次称为树的深度。

二叉树的特点:(1)非空二叉树只有一个根结点;(2)每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。

二叉树的基本性质:

(1)在二叉树的第k层上,最多有2k-1(k≥1)个结点;

(2)深度为m的二叉树最多有2m-1个结点;

(3)度为0的结点(即叶子结点)总是比度为2的结点多一个;

(4)具有n个结点的二叉树,其深度至少为[log2n]+1,其中[log2n]表示取log2n的整数部分;

(5)具有n个结点的完全二叉树的深度为[log2n]+1;

(6)设完全二叉树共有n个结点。如果从根结点开始,按层序(每一层从左到右)用自然数1,2,?.n给结点进行编号(k=1,2?.n),有以下结论:

①若k=1,则该结点为根结点,它没有父结点;若k>1,则该结点的父结点编号为INT(k/2);

②若2k≤n,则编号为k的结点的左子结点编号为2k;否则该结点无左子结点(也无右子结点);

③若2k+1≤n,则编号为k的结点的右子结点编号为2k+1;否则该结点无右子结点。 满二叉树是指除最后一层外,每一层上的所有结点有两个子结点,则k层上有2k-1个结点深度为m的满二叉树有2m-1个结点。

完全二叉树是指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。

二叉树存储结构采用链式存储结构,对于满二叉树与完全二叉树可以按层序进行顺序存储。

二叉树的遍历:

(1)前序遍历(DLR),首先访问根结点,然后遍历左子树,最后遍历右子树;

(2)中序遍历(LDR),首先遍历左子树,然后访问根结点,最后遍历右子树;

(3)后序遍历(LRD)首先遍历左子树,然后访问遍历右子树,最后访问根结点。

1.7 查找技术

顺序查找的使用情况:

(1)线性表为无序表;

(2)表采用链式存储结构。

二分法查找只适用于顺序存储的有序表,对于长度为n的有序线性表,最坏情况只需比较log2n次。

1.8 排序技术

排序是指将一个无序序列整理成按值非递减顺序排列的有序序列。

交换类排序法:(1)冒泡排序法,需要比较的次数为n(n-1)/2;(2)快速排序法。 插入类排序法:(1)简单插入排序法,最坏情况需要n(n-1)/2次比较;(2)希尔排序法,最坏情况需要O(n1.5)次比较。

选择类排序法:(1)简单选择排序法,

最坏情况需要n(n-1)/2次比较;(2)堆排序法,最坏情况需要O(nlog2n)次比较。

相关推荐