数据结构

本文介绍了数据结构的基本概念,包括逻辑结构与物理结构的区别,以及常见的数据组织方式如集合、线性、树和图等。此外,还详细讨论了算法的特点、设计要求以及评估标准,特别是算法的时间复杂度分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构
  • 概念:研究数据的逻辑结构和物理结构以及他们之间的关系,并对这种结构定义适应的算法
  • 数据结构的是二元组
    Data_Structure = (d, r)
    d:数据元素的有限集 r:d上关系的有限集
  • 逻辑结构:数据之间的逻辑关系的描述
    1. 集合:没有关系
    2. 线性:线性关系
  • 物理结构:逻辑结构在计算机存储器里的实现
  • 算法:有限只指令的集合,可以完成一项特定的任务
    1. 有穷性
    2. 确定性
    3. 可行性
    4. 输入
    5. 输出
  • 算法的设计要求
    1. 正确性
    2. 可读性
    3. 健壮性
    4. 时间效率和空间占有量
  • 算法和程序的区别
    1. 表现形式不同
    2. 是否具备有穷性
  • 决定运行时间的因素
    1. 问题的规模
    2. 对源程序编译的时间
    3. 机器的速度
    4. 程序中指令重复执行的次数
  • 频度:算法执行一次,某一语句实际被执行的次数
  • 算法运行时间T(n) = 每条语句频度之和
  • O量级(算法运行时间的复杂读):T(n) 的最高次项去掉常数,常量级最好,指数级最差
    如果T(n) = 2n + 1 ,O(n)
    如果T(n) = 2n方 + 2n + 1, O(n方)
  • 封装和数据隐藏:将数据和操作数据的行为有机的结合
  • 继承和重用:保持原有类特性的基础上,对新类进行更具体、更详细的说明
  • 多态性:支类中具有相似功能的不同函数使用同一个名来实现
  • 线性表
    1. n >= 0个数据元素
    2. 有限序列(位置有序)
    3. 元素个数位线性表的长度
    4. 除了首位元素,每个元素只有一个直接前驱和一个直接后继
  • 线性表的操作
    1. 随即存储
    2. 插入
    3. 删除
    4. 查找
    5. 归并、拆分、复制、计数、排序
  • 线性表的顺序表(用顺序存储方法存储)
    1. 顺序存储:连续的存储空间
    2. 逻辑顺序与物理顺序相同
    3. 顺序存储,随机存取
    4. 例:寻找元素X的位置
tamplate <class T>
in Sqlist<T>::Locate(const T& x)const
{   
    int i = 0;
    while (i <= last && data[i != x]) i ++;
    // 查找失败
    if (i > last) return -1;
    // 查找成功
    else return i 
}
  • 析构函数
    1. 与构造函数相反
    2. 将空间还给系统
  • 线性表的单链表(用非顺序存储方法存储,只有一个链接域)
    1. 存储数据(data)的同时存放下一个元素的地址(next)
    2. 逻辑顺序与物理顺序可以不同
    3. 插入、删除方便
    4. 表头(第一个节点的位置)、表尾(空指针^)
  • 单链表的指针实现
    1. 1.
point *P;
point p1;
p = &p1
//直接访问对象
p1.x
p1.y
// 通过指针访问对象
p->x 
p->y
  1. 不带头节点的单链表结构
    • 判断表尾的条件: p->next == null
    • 判断空表的条件: L == null
    • 移动指针: p = p->next
  2. 单链表的插入
s -> next = p -> next;
p -> next = s;
  1. 单链表的删除
q = p -> next;
p -> next = q -> next;
  • 循环链表
    1. 定义:单链表的最后一个节点的指针指回到第一个节点
    2. 判断表尾:p -> next == L
    3. 空表的条件:L -> next == L
  • 双向循环链表
    1. 每个节点有3个域,left data right(前驱,数据,后驱)
    2. 判空条件:L -> left == L -> right == L
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值