DS大纲知识点

一、基本概念和术语

大纲要求:(一)

数据元素、数据结构、抽象数据类型等概念

1、数据元素

(1)数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。
(2) 一个数据元素可由若干个数据项组成,但是数据项是构成数据元素的不可分割的最小单位。
例如:学生记录就是一个数据元素,它由学号、姓名、性别等数据项组成。

2、数据对象

数据对象是具有相同性质的数据元素的集合,是数据的一个子集。
例如:整数数据对象是集合 N = {0,1,-1……}

3、数据结构

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

逻辑结构

描述的是数据之间的逻辑关系, 与数据如何存储在计算机内部无关。
常见的逻辑结构包含: 线性结构以及非线性结构
线性结构主要指一般线性表、受限线性表(还有栈和队列、串) 以及线性表的推广(数组)
非线性结构包括:集合、树、图

存储结构

指在计算机内部存储的结构, 又称为物理结构。

常见的存储结构:
顺序存储,、链式存储,、索引存储、散列存储(又称哈希存储)

数据的运算

包括运算的定义和实现。
运算的定义是针对逻辑结构的,指出运算的功能;
运算的实现是针对存储结构的,指出运算的具体操作步骤。

4、数据类型

(1)原子类型 其值不可再分的数据类型(如int、double等)

(2)结构类型 其值可以再分解成若干类型

(3)抽象数据类型(ADT) 抽象数据组织以及相关的操作。
注:ADT是一种数据结构

大纲要求(二)

算法设计的基本要求

1、算法重要特性

有穷性:有穷时间内能执行完的

确定性:相同输入只会产生相同的结果

可行性:可以用已有的基本操作实现算法

输入:丢给算法处理的数据

输出:算法处理的结果
注:可以有零个输入但是至少一个输出

2、算法设计的基本要求

正确性:能正确解决问题

可读性:对算法的描述要让其他人也看得懂

健壮性:算法能处理一些异常信息

高效率与低存储需求: (1)即算法执行既省时、又省内存; (2)时间复杂度低、空间复杂度低

大纲要求(三)

语句的频度和估算时间复杂度

1、时间复杂度

常见的渐近时间复杂度(常对幂指阶)

2、空间复杂度

算法原地工作是指算法所需的辅助空间为常量 O(1)

易错点

1、在存储数据的时候,不仅要存储数据元素的值,而且要存储数据元素之间的关系。
2、链式存储设计时,各个不同结点的存储空间可以不连续,但结点内的存储单元地址必须连续。
3、数据的逻辑结构是从面向实际问题的角度出发的,只采用抽象表达方式,独立于存储结构,与数据的存储无关,是独立于计算机的。而数据的存储结构是逻辑结构在计算机上的映射, 它不能独立于逻辑结构。

二、线性表

大纲要求(一)

线性表的定义和基本操作

线性表

定义:是具有相同数据类型的n个数据元素的有限序列
注意:线性表是一种逻辑结构,表示元素之间一对一的相邻关系。顺序表和链表是指存储结构

基本操作:初始化, 求表长, 按值查找, 按位查找, 插入, 删除, 输出, 判空, 销毁

大纲要求(二 )

线性表的实现:①顺序存储结构 ②链式存储结构 ③线性表的应用

线性表的实现

1.顺序存储结构

线性表的顺序存储又称为顺序表,特点是表中元素的逻辑顺序与其物理顺序相同
线性表的顺序存储结构是一种随机存储的结构,存储密度大,且顺序表中元素的位序是从1开始的,而数组中元素的下标是从0开始。

顺序表的各种操作算法复杂度如下:

插入: 时间复杂度O(n)
删除:时间复杂度O(n)
按值查找:时间复杂度:O(n)

2.链式存储结构

线性表的链式存储又称单链表。由于单链表的元素离散地分布在存储空间中, 所以单链表是非随机的存储结构,即不能直接找到表中某个特定元素。 单链表设置头节点是为了统一插入删除, 方便运算。

单链表的各种操作算法复杂度如下:
建立链表: 头插法和尾插法 时间复杂度都是O(n)
按序号查找:O(n)
插入节点: 最低O(1)最高O(n)
删除节点: 最低O(1)最高O(n)
求表长:O(n)

3.线性表的应用

双链表:为了克服单链表每次都从头节点依次顺序地向后遍历而引入的。
插入删除操作时间复杂度O(1)
注意插入和删除指针的变化过程

循环链表
注意表空时,尾结点不是指向NULL,而是指向头结点。

静态链表
借助数组来描述线性表的链式存储结构
和顺序表一样,需要预先分配一块连续的内存空间
插入删除和动态链表相同, 只需要修改指针, 不需要移动元素
指针指的是结点的相对地址(数组下标), 也称游标

易错点

1、 区分随机存储和顺序存储

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值