数据结构和算法基本概述

数据结构和算法的关系:

数据结构是一门研究数据以什么方式进行组织。数据结构是算法的基础,学好数据结构并不一定就学的好算法。要学好算法必须先学数据结构。

例如,学好了数组不一定学得会归并排序算法。

程序 = 算法 + 数据结构

数据结构包括线性结构和非线性结构

线性结构(最常用

线性结构有两种不同的存储方式:

  1. 顺序存储方式
  2. 链式存储方式

线性结构的特点:数据元素之间存在一对一关系

比如:数组 a[0] = 30;

描述:当下标为0时,就唯一对应30,这就叫一对一的线性关系

何为顺序存储方式?

即:顺序表,顺序表中的存储元素是连续的,在内存分配时地址是连续的

比如:数组就是顺序表,是连续的。

画图分析:
数据结构和算法基本概述

何为链表存储方式?

即:链表,链式存储存储的元素不一定是连续的,有可能是连续有可能不一定是连续的,每一个数据相当于一个结点,结点关系是靠地址连起来的。

如:单链表、双向链表

链表好处:可充分利用碎片内存,因为地址是不连续的

画图分析:
数据结构和算法基本概述
常见的线性结构:数组、队列、链表、栈(最常用的4种)

队列分为单向队列、环形队列,链表分为单链表、环形链表和双向链表,栈可以用数组| 链表实现

非线性结构

非线性结构的特点:数据元素之间不是一对一关系

比如,一个结点可能有多个结点,甚至还可能有更多结点

画图分析:
数据结构和算法基本概述

非线性结构常用的有:二维数组、多维数组、广义表、树结构、图结构

其中图结构和树结构是非线性结构中用的最多的,树结构和图结构与很多算法是关联的