基础知识

结构体就是系统提供给程序员制作新的数据类型的一种机制,即可以用系统已经有的不同的基本数据 类型或用户定义的结构型,组合成用户需要的复杂数据类型。

链表结点的结构型定义

typedef struct Node
{
    int data;
    struct Node *next;
}Node;

组成此结构体的成员中有一个是指向和自己类型相同的变量的指针,内部必须要用自己来定义这个指针; 凡是结构型内部有这样的指针型,则在定义 Node 的 typedef struct 语句后都要加上 Node这个结构型的名字。

二叉树结点的定义

tepedef struct BTNode
{
    int data;
    struct BTNode *lchild;
    struct BTNode *rchild;
}BTNode;

新结点的制作

BTNode *BT;
BT=(BTNode*)malloc(sizeof(BTNode));

先定义一个结点的指针BT,然后用函数malloc()来申请一个结点的内存空间,最后让指针BT指向这片内存空间,这样就完成了一个结点的制作。

用结构体变量直接去分量,其操作用".";用指向结构体变量的指针来取分量,其操作用"->"。

算法时间复杂度分析

将算法中基本操作的执行次数作为算法时间复杂度的度量。因此对一个算法进行时间复杂度分析的要点,就是明确 算法中哪些操作是基本操作,然后 计算出基本操作重复执行的次数即可。

基本概念

  1. 数据:是客观事物的符号表示,在计算机科学中是指所有能输入到计算机中 并且被计算机程序处理的符号的总称。
  2. 数据元素: 数据元素是数据的基本单位,在计算机程序中通常将其作为一个整体进行考虑和处理。有时,一个数据元素可由若干个数据项组成。
  3. 数据项:是数据结构中讨论的最小单元,是数据记录中最基本的、不可分的数据单元。
  4. 数据对象:是性质相同的数据 元素的集合,是数据的一个子集。
  5. 数据结构:是指相互之间存在一种或 多种特定关系的数据元素的集合。包括三个方面的内容:逻辑结构、存储结构和对数据的运算。
  6. 数据的逻辑结构:是对数据之间关系的描述,与数据的存储结构无关,同一种逻辑结构可以有多种存储结构。

线性结构:是一个数据元素的有序(次序)集合。基本特征是: 集合中比存在唯一的一个“第一个元素”;集合中比存在唯一的一个“最后一个元素”;除最后一个元素之外,其他数据元素均有唯一的“后继”;除第一个元素之外,其他数据元素均有唯一的“前驱”。

数据结构中,线性结构是指数据元素之间存在着“一对一”的 线性关系的数据结构。

非线性结构:其中的结点存在一对多的关系,可细分为树形结构和图形结构。

     7.数据的物理结构

数据的物理结构又称存储结构,是数据的逻辑结构在计算机中的表示(又称映射)。它包括数据元素的表示和关系的表示。当数据元素是有若干数据项构成的时候,数据项的表示称为数据域。

数据元素之间的关系在计算机中有两种不同的表示方法:顺序映射和非顺序映射。对应两种不同的存储结构分别是顺序存储结构和链式存储结构。顺序映射时借助 数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系;非顺序映射时借助指针表示数据元素之间的逻辑关系。

在数据结构中有以下4中常用的存储方式。

  • 顺序存储:把逻辑上相邻的结点存储在物理位置上响铃的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。
  • 练市存储:不要求逻辑上相邻的结点在物理位置上也相邻,结点间的逻辑关系是由附加的指针字段表示的。
  • 索引存储:在存储结点信息时除建立存储结点信息外,还建立附加的索引表来表示结点的地址。
  • 散列存储:根据结点的关键字通过散列函数直接计算出该结点的存储地址。这种方法本质上是顺序存储方法的扩展。

算法:可以理解为由基本运算及规定的运算顺序缩构成的完整的阶梯步骤,或者看成按照要求设计好的有限的确切的计算序列。

算法的特性:

  1. 有穷性:必须保证执行 有限歩之后结束。
  2. 确定性:算法的每一步骤必须有确定的定义。
  3. 输入:一个算法有零个或多个输入。
  4. 输出:一个算法有一个或多个输出。
  5. 可行性:算法中的所有操作都必须可以通过已经 实现的基本操作进行运算,并在有限次内实现,而且人们用笔和纸做有限次运算后也可以完成。

算法的设计目标:包括正确性、可读性、健壮性和算法效率,其中算法效率通过算法的时间复杂度和空间复杂度来描述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值