已看计算机软件技术基础-03 算法和数据结构2讲解.pptx
文本预览下载声明
算法和数据结构
数据结构
入学问题
住宿
组织
房间分配
班级、专业分配
固定
不固定
算法和数据结构
数据结构
数据结构的研究内容
数据的逻辑结构、数据的存储结构、数据的运算
数据的逻辑结构:Data-Structure = (D,R)
其中:D是数据元素的集合,R是D上关系的集合
一般将数据结构分为两大类:线性数据结构和非线性数据结构。线性数据结构有线性表、栈、队列、串、数组和文件;非线性数据结构有树和图
程序中的数据运算是定义在数据的逻辑结构上的,但运算的具体实现要在存储结构(物理结构)上进行。每种逻辑结构都有一个运算集合。常用的运算有检索、插入、删除、更新、排序等
算法和数据结构
研究方法
最基本的数据结构为表,其他数据结构都转化为表处理
方法:
研究数据结构的逻辑结构的运算性质
研究数据结构的物理结构
根据物理结构和运算性质写算法(集合)
逻辑结构和物理结构是相对的
算法和数据结构
线性表
线性表的逻辑结构是n个数据元素的有限序列:
(a1, a2 ,a3,…an)
n为线性表的长度(n≥0),n=0的表称为空表
数据元素呈线性关系.必存在唯一的称为“第一个”的数据元素;必存在唯一的称为“最后一个”的数据元素;
除第一个元素外,每个元素都有且只有一个前驱元素; 除最后一个元素外,每个元素都有且只有一个后继元素。
所有数据元素ai在同一个线性表中必须是相同的数据类型
算法和数据结构
线性表
线性表按其存储结构可分为顺序表和链表。用顺序存储结构存储的线性表称为顺序表;用链式存储结构存储的线性表称为链表
线性表的基本运算主要有:
在两个确定的元素之间插入一个新的元素;
删除线性表中某个元素;
按某种要求查找线性表中的一个元素,需要时,还可找到元素进行值的更新
算法和数据结构
顺序表和一维数组
将线性表中的数据元素依次存放在某个存储区域中,所形成的表称为顺序表。一维数组就是用顺序方式存储的线性表,其下标可看成元素的相对地址。
顺序表的运算:
插入
删除
查找\访问
算法和数据结构
顺序表和一维数组
算法和数据结构
顺序表和一维数组
插入
bool Insert(int numbers[], int *n, int num, int pos)
{
if (pos 0 || pos *n)
return false;
for (int i = *n; i pos; --i)
numbers[i] = numbers[i-1];
numbers[pos] = num;
*n += 1;
return true;
}
算法和数据结构
顺序表和一维数组
删除
bool Delet(int numbers[], int *n, int pos)
{
if (pos 0 || pos = *n)
return false;
*n -= 1;
for (int i = pos; i *n; ++i)
numbers[i] = numbers[i+1];
return true;
}
算法和数据结构
顺序表和一维数组
顺序表的运算
void main()
{
int numbers[10];
int num = 0;
Insert(numbers, num, 2, 0);
Insert(numbers, num, 6, 1);
Insert(numbers, num, 8, 2);
Insert(numbers, num, 5, 3);
Insert(numbers, num, 7, 4);
Insert(numbers, num, 9, 2);
Delete(numbers, num, 3);
}
算法和数据结构
链表
老王
老徐
大洪
小刚
算法和数据结构
单链表
enum Code
{
LaoWang, LaoXu,
DaHong, XiaoGang
};
struct Spy
{
Code c; // 信息域
Spy *next; // 指针域
};
struct Station
{
Spy *head;
int num;
};
算法和数据结构
单链表
插入
Spy* Insert(Code cd, Spy *prev, Station *st)
{
}
prev
算法和数据结构
单链表
插入
Spy* Insert(Code cd, Spy *prev, Station *st)
显示全部