q6378561 / cdemo

struct

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

数据结构

基本概念

数据

数据元素

一个数据元素由若干数据项组成

数据项

数据结构

各个元素之间的==关系==

数据对象

具有==相同性质==的数据元素的集合

数据类型

抽象数据类型(ADT)

image-20210323204454318

数据结构图

image-20210323203207464

数据结构的三要素

逻辑结构

集合

线性结构

树形结构

图状结构(网状结构)

物理结构(存储结构)

顺序存储

非顺序存储

链式存储
索引存储
散列存储

数据的运算

算法

程序=数据结构+算法

算法的特性

有穷性

有穷事件内能执行完

算法是有穷的

程序可以是无穷的

确定性

相同输出只会产生相同输出

可行性

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

输入

丢给算法处理的数据

输出

算法处理的结果

"好"算法的特质

正确性

可读性

健壮性

高效率与低存储量需求

算法效率的度量

时间复杂度

空间复杂度

线性表

定义

逻辑结构

线性表是具有相同数据类型的n个元素的有限序列

存储结构分为顺序表和链表

线性表是一种逻辑结构,表示元素之间一对一的相邻关系。顺序表和链表是指存储结构,两者属于不同层面的概念,因此不能互相混淆

也就是说线性表这一种逻辑结构对应的的存储结构分为顺序表链表

基本操作

运算

顺序表

实现:静态分配

局限性: 顺序表的内存空间是不可调的 存在不机智性 容易对内存空间产生溢出或者滥用

实现:动态分配

// 动态分配
//typedef struct{
//    int length;   // 顺序表的当前长度
//    int MaxSize;  // 顺序表的最大容量
//    int *data;     // 指示动态分配数组的指针
//}SqList;          // 顺序表的类型定义(动态分配方式)

key: 动态申请和释放内存空间

malloc 申请

free 函数

About

struct


Languages

Language:C++ 62.7%Language:C 30.9%Language:CMake 6.4%