DS大纲知识点

本文详细介绍了数据结构的基础概念,包括数据元素、数据对象、数据结构和数据类型,并重点讲解了线性表的定义、基本操作及其两种常见实现:顺序存储和链式存储。在顺序存储中,讨论了插入、删除和查找的时间复杂度;而在链式存储中,分析了单链表的特性和操作效率。此外,还强调了在存储数据时要注意存储数据元素的关系以及存储结构的选择。
摘要由CSDN通过智能技术生成

一、基本概念和术语

大纲要求:(一)

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

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、 区分随机存储和顺序存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值