论数据结构

诞生

尼古拉斯・沃斯 1984 年获得图灵奖,1992 年当选瑞士工程院院士,1994 年当选美国国家工程院外籍院士,1999 年 4 月退休。

他曾经提出了一个著名公式:算法 + 数据结构 = 程序(Algorithms + Data Structures = Programs),并凭借其摘得图灵奖,该公式之后也成为计算机领域人尽皆知的名言。


比喻

****战场:****程序运行所需的软件、硬件环境。

****敌人:****项目或模块的功能需求。

****指挥官:****编写程序的程序猿/媛。

****士兵和装备:****数据。

排兵布阵、组织结构、指挥体系 ****:****数据结构。

战略战术 ****:****算法。


基本类型

逻辑结构有四种基本类型:集合结构、线性结构、树形结构、图形结构(或网状结构)

集合结构:同属一个集合

线性结构:1对1

树形结构:1对多

图结构:多对多


嵌入式领域经常使用线性结构:

线性结构中有

数组

链表:

链表由一系列`结点(Node)`组成,每个结点包含一个数据元素和一个指向下一个结点的`指针(Pointer)`。所有结点通过指针相连,形成一个链式结构。通常我们将链表中的第一个结点称为`头结点`。

链表又分为单链表、双链表、循环单链表、循环双链表。

栈:

后进先出` (LIFO,Last In First Out)或`先进后出` (FILO,First In Last Out)的线性表

栈最常用的地方就是计算机的函数调用,不管何种语言,最先被调用的一定最后返回。举例:

cs 复制代码
void funcC() {
}
void funcB() {
    funcC();
}
void funcA() {
    funcB();
}
  • 调用顺序是: funcA() -> funcB()-> funcC()。
  • 返回顺序是: funcC() -> funcB()-> funcA()。

队列

队列(Queue):也是操作受限的线性表,限制为仅允许在表的一端进行插入(入队或进队),在表的另一端进行删除(出队或离队)操作。

是一种先进先出(First In First Out ,简称FIFO)的线性结构。类似于生活中的排队行为。

相关推荐
CSharp精选营3 天前
关系型 vs 非关系型:从原理到选型,一文搞定数据库核心分类
数据结构·nosql·关系型数据库·非关系型数据库·技术选型
刘马想放假6 天前
Modbus 全栈技术解析:TCP、RTU、ASCII、RTU over TCP
数据结构·网络协议
北域码匠7 天前
冒泡排序太慢?鸡尾酒排序双向优化,原生 C# 零第三方库完整代码
数据结构·排序算法·泛型·c# 算法·鸡尾酒排序·原生 c# 开发·冒泡排序优化·嵌入式算法
Darling噜啦啦14 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
小小工匠15 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
玖玥拾15 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
Qres82115 天前
算法复键——树状数组
数据结构·算法
牛油果子哥q15 天前
并查集(DSU)超精讲,路径压缩、按秩合并、万能模板、连通性判定、最小生成树与刷题实战全解
数据结构·c++·最小生成树·并查集
凌波粒15 天前
LeetCode--491.递增子序列(回溯算法)
数据结构·算法·leetcode
WL学习笔记15 天前
单项不带头不循环链表
数据结构·链表