【数据结构与算法】一、数据结构绪论

定义

程序设计 = 数据结构 + 算法

数据类型

是一组性质相同的值的集合及定义在此集合上的一些操作的总称。

抽象

指抽取出事物具有的普遍性的本质,抽取问题的特征而忽略非本质的问题,是对具体事物的一个概括。 抽象:指抽取出事物具有的普遍性的本质,抽取问题的特征而忽略非本质的问题,是对具体事物的一个概括。

抽象的示例:

>现实场景:管理多种交通工具(如汽车、自行车、摩托车),它们都具有“启动”和“停止”的功能。

// 定义一个抽象的交通工具结构体
typedef struct {
    void (*start)();
    void (*stop)();
} Vehicle;

// 汽车的具体实现
void car_start() { printf("汽车启动\n"); }
void car_stop()  { printf("汽车停止\n"); }

// 自行车的具体实现
void bike_start() { printf("自行车启动\n"); }
void bike_stop()  { printf("自行车停止\n"); }

int main() {
    Vehicle car = {car_start, car_stop};
    Vehicle bike = {bike_start, bike_stop};

    car.start();
    bike.start();
    car.stop();
    bike.stop();
    return 0;
}

>说明:  
这里的 `Vehicle` 结构体就是对“交通工具”这一现实概念的抽象,只关注所有交通工具共有的“启动”和“停止”操作,而不关心具体实现细节。

抽象数据类型

指一个数学模型及定义在该模型上的一组操作。把现实中的问题分解为多个小问题,建立计算机能处理的数据模型。

数学模型:  
线性表是n个数据元素的有限序列。

定义的操作:
- InitList(*L):初始化线性表L
- ListEmpty(L):判断线性表是否为空
- ListLength(L):返回线性表长度
- GetElem(L, i, *e):取第i个元素
- ListInsert(L, i, e):在第i个位置插入元素e
- ListDelete(L, i, *e):删除第i个元素并用e返回
- LocateElem(L, e):查找元素e的位置

说明:  
抽象数据类型只关心数据结构和操作,不关心具体实现(如用数组还是链表实现)。

数据结构:

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

逻辑结构

数据对象中数据元素之间的相互关系。

  1. 集合结构

  2. 线性结构

  3. 树形结构

  4. 图形结构。

物理结构:

是指数据的逻辑结构在计算机中的存储形式。

  1. 顺序存储结构。

  2. 链式存储结构。

💡本内容采用 CC BY-NC-SA 4.0 协议,非商业转载需注明作者和出处,商业用途请联系作者授权,衍生作品需采用相同协议。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
🎵 背景音乐
正在播放
00:00 00:00