数据结构与算法:修订间差异
来自陋室
更多操作
删除的内容 添加的内容
小 修正错误 |
Maintenance script(留言 | 贡献) 校对格式并去除空列表项 |
||
| 第1行: | 第1行: | ||
== 研究数据结构的核心 == |
== 研究数据结构的核心 == |
||
研究数据结构的目标是设计高效的算法。核心内容包括: |
研究数据结构的目标是设计高效的算法。核心内容包括: |
||
| 第9行: | 第8行: | ||
== 逻辑结构 == |
== 逻辑结构 == |
||
=== |
=== 线性结构 === |
||
元素之间有一对一的线性关系。 |
元素之间有一对一的线性关系。 |
||
| 第15行: | 第14行: | ||
* 线性表:数据按顺序排列(如数组、链表)。 |
* 线性表:数据按顺序排列(如数组、链表)。 |
||
* |
|||
* 栈:后进先出(LIFO)。 |
* 栈:后进先出(LIFO)。 |
||
* |
|||
* 队列:先进先出(FIFO)。 |
* 队列:先进先出(FIFO)。 |
||
* |
|||
* 串:字符序列(字符串)。 |
* 串:字符序列(字符串)。 |
||
* |
|||
* 数组:固定大小的连续存储单元。 |
* 数组:固定大小的连续存储单元。 |
||
* |
|||
* 广义表:允许元素为另一个线性表的特殊结构。 |
* 广义表:允许元素为另一个线性表的特殊结构。 |
||
=== |
=== 非线性结构 === |
||
元素之间关系复杂,可能有层次或网络关系。 |
元素之间关系复杂,可能有层次或网络关系。 |
||
例子: |
例子: |
||
* |
* 树:节点间有一对多的层次关系。 |
||
* |
* 图:节点间有任意多对多的关系。 |
||
== 数据存储结构 == |
== 数据存储结构 == |
||
=== |
=== 顺序存储结构 === |
||
用连续的内存单元存储数据。 |
用连续的内存单元存储数据。 |
||
特点: |
特点: |
||
* |
* 易于通过索引访问。 |
||
* 插入和删除操作相对复杂,需要移动大量元素。 |
* 插入和删除操作相对复杂,需要移动大量元素。 |
||
=== |
=== 链式存储结构 === |
||
用指针将不连续的内存单元链接在一起。 |
用指针将不连续的内存单元链接在一起。 |
||
特点: |
特点: |
||
* |
* 灵活,支持动态扩展。 |
||
* 插入和删除效率高,但随机访问速度慢。 |
* 插入和删除效率高,但随机访问速度慢。 |
||
| 第57行: | 第51行: | ||
解决特定问题的一系列明确的指令。 |
解决特定问题的一系列明确的指令。 |
||
=== |
=== 五个特性 === |
||
* |
* 有穷性:算法必须在有限步骤内完成。 |
||
* |
* 确定性:每一步有明确的含义。 |
||
* |
* 可行性:每一步都能在有限时间内完成。 |
||
* |
* 输入:算法接受零个或多个输入。 |
||
* |
* 输出:算法产生一个或多个输出。 |
||
== 数据结构中的关系 == |
== 数据结构中的关系 == |
||
=== |
=== 线性结构 === |
||
元素之间一对一的关系,形成直线结构。 |
元素之间一对一的关系,形成直线结构。 |
||
例子:链表、数组。 |
例子:链表、数组。 |
||
=== |
=== 树形结构 === |
||
元素之间一对多的关系,形成分支结构。 |
元素之间一对多的关系,形成分支结构。 |
||
例子:二叉树、B树。 |
例子:二叉树、B树。 |
||
=== |
=== 图形结构 === |
||
元素之间多对多的关系,形成网络结构。 |
元素之间多对多的关系,形成网络结构。 |
||
| 第85行: | 第79行: | ||
定义了数据和操作,但与具体实现无关。 |
定义了数据和操作,但与具体实现无关。 |
||
如栈,ADT定义了push和pop操作,而不涉及具体实现。 |
如栈,ADT 定义了 push 和 pop 操作,而不涉及具体实现。 |
||
{{Template:数据结构与算法}} |
{{Template:数据结构与算法}} |
||