数据结构考研笔记第一、二章(王道)

本文是考研数据结构的学习笔记,重点介绍了线性表和链表的概念与操作。线性表包括顺序存储和单链表,详细讨论了插入、删除和查找操作的时间复杂度。同时,讲解了双链表、静态链表的特点和操作。对比了顺序表与链表的优缺点,强调了它们在存储和操作上的差异。
摘要由CSDN通过智能技术生成

考研数据结构

第一章

绪论

cGUtZn.png

数据

信息的载体,是描述客观事物属性的数、字符及所有 能输入到计算机中并被计算机程序识别 和处理的符号集合。数据是计算机程序加工的原料。

数据元素数据项

数据元素是数据的基本单位,通常作为一个整体

一个数据元素可以包含多个数据项

eg:

一个顾客就是一个数据元素,属于特定顾客的号数、取号时间、就餐人数等都为数据对象

数据结构数据对象
  1. 数据结构:相互间存在一种或者多种特定关系的数据元素集合
  2. 数据对象:是具有 相同性质的元素集合,是数据的子集
数据结构三要素

cGdu38.png

逻辑结构:

  1. 集合
  2. 树形结构
  3. 图结构
  4. 线性结构

物理结构(存储结构):

  1. 顺序结构
  2. 链式存储
  3. 索引存储(拥有索引表)
  4. 散列存储(第六章)

数据的运算

  • 运算的定义:是针对逻辑结构的,指出运算功能
  • 运算的实现:是针对物理结构的,即指出运算的具体操作步骤
数据类型抽象数据类型

数据类型:是一个值的集合与定义哎这个集合上的一组操作的总称

  • 原子类型:其值不可再分的数据类型 eg:int
  • 结构类型:其值可以再分解为若干成分的数据类型 eg:struct

抽象数据类型(ADT):是抽象数据组织及与之相关的操作,主要考虑数据的逻辑结构与数据运算,用数学化的语言定义数据的逻辑结构、定义运算,与具体事实无关

cGBNCt.png

算法

(程序 = 数据结构 + 算法)

cGDgdH.png

算法的五特性是必要条件不是算法的定义

算法的时间复杂度

加法规则

T(n) =T1(n) + T2(n) = O(f(n) + O(g(n))) = O(max(f(n),g(n)))

乘法规则

T(n) = T1(n) * T2(n) = O(f(n) * g(n))

时间复杂度排序

cGrOBD.png

cGsBDO.png

cGs28I.png

算法空间复杂度

cGcxqf.png

cGgFRs.png

cGgEMq.png

cGc4r6.png

第二章

线性表

定义

线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,n = 0是线性表是一个空表。

L = (a1,a2,…,ai,ai+1,…,an)

ai是线性表中的“第几个”元素线性表中的 位序位序是从1开始的

a1是表头元素:an是 表尾元素

除了第一个元素外,每个元素有且只有一个 直接前驱:除最后一个元素外,每个元素有且仅有一个直接后继。

线性表的基本操作
顺序存储
  • 静态存储

    #define MaxSize 10
    typedef strct {
        ElemType data[MaxSize];
        int length;
    }Sqlist
    
  • 动态分配

    #define MaxSize 10
    typedef strct {
        ElemType *data;
        int MaxSize;//顺序表的最大容量
        int length;
    }Sqlist
    

    (malloc、free函数分别动态申请和释放内存空间)

    eg:L.date = (ElemType *)mallo

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值