Skr-Eric的数据结构和算法课堂(一)-- 概述、线性结构的基本实现模型、容器和二叉树结构

数据结构概述

概念:

数据结构:计算机存储和组织数据的方式.

 

分为三层:

抽象层(逻辑结构):数据之间(与计算机无关)的逻辑结构.

分为: 线性结构/非线性结构

其中,非线性结构分为:集合结构/树状结构/网状结构.

A.线性结构(有序性/一对一的前后关系)

  结构中必须存在唯一的首元素

结构中必须存在唯一的尾元素

除首元素外,结构中每一个元素有且只有一个前驱元素

除尾元素外,结构中每一个元素有且只有一个后继元素

B.集合结构(无序性/松散的)

  确定性:要么属于集合要么不属于集合,不存在可能属于或者可能不属于的情况.

无序性:无前后顺序关系.

唯一性:各元素互不相同.

C.树状结构(一对多的父子关系)

  结构中必须存在唯一的根节点

除根元素外,结构中每一元素有且只有一个前驱元素

除叶元素外,结构中每一元素可拥有一个或多个后继元素

D.网状结构(多对多的映射关系)

  结构中每一元素都可拥有任意数量的前驱元素和后继元素

结构中任意两个元素之间均可建立关联

 

逻辑层(物理结构):数据具体在计算机内存中存储方式.

1.顺序存储结构:把逻辑上相邻的元素存储在相邻的物理内存位置中.

优缺点:节省内存空间/方便随机访问/增加或删除元素复杂/降低存储空间的利用率

2.链式存储结构:把逻辑上相邻的元素存储放在不连续的物理内存位置中,通过存放下一数据的链接域连接起来.

优缺点:浪费内存空间/随机访问不方便/增加或删除元素简单/提高存储空间的利用率

 

实现层(运算结构):数据结构的基本操作.

1.创建/删除结构

2.插入/删除/获取/修改元素

3.排序/查找

 

对于逻辑结构和物理结构的关系:

每一种逻辑结构具体采用哪种物理结构来实现没有规定.

 

线性结构的基本实现模型

顺序表:基于顺序存储结构的线性(表)结构

链表:基于链式存储结构的线性(表)结构

分为单向链表和双向链表.

其中单向链表的特征:

  每个节点包含存放的数据元素-data

  每个节点还需要保存指向下一个节点的链接域

  链表尾节点的下一个链接域为空

其中双向链表的特征:

  每个节点包含存放的数据元素-data

  每个节点还需要保存指向下一个节点的链接域

  每个节点还需要保存指向上一个节点的链接域

  链表尾节点的下一个链接域为空

  链表首节点的上一个链接域为空

 

线性结构的容器

栈:

几个基本概念:

  栈顶和栈底:允许数据元素插入和删除的一端称为栈顶,另一端称为栈底

  压入:栈的插入数据操作,也称为入栈/压栈/进栈,常用push

  弹出:栈的删除数据操作,也称为出栈/弹栈,常用pop

基本特征:

  栈限制只能在栈顶进行数据插入和删除操作

栈中数据元素遵循'后进先出'的原则,也称为FILO结构(First In Last Out)

向满栈中压入数据和从空栈中弹出数据,均视为错误

 

队列:

几个概念:

  后端:插入数据元素的端点

前端:删除数据元素的端点

队首和队尾:最先和最后插入的数据元素在被弹出前作为队首和队尾被外界访问

压入:队列的插入操作,也称为入队列

弹出:队列的删除操作,也称为出队列

基本特征:

  队列可以做两端增删数据元素

队列中的数据元素遵循'先进先出'的原则,也称为FIFO结构(First In First Out)

从空队列中弹出数据和向满队列中压入数据,均视为错误

 

 

 二叉树结构

二叉树是最简单的一种树状结构.

基本特征:

  树中每个节点最多关联两个后继节点,也就说,一个节点可能关联的节点数为:0/1/2.

每个节点的后继节点明确分为左右,称为左子节点/右子节点.

 

 

 

 

想要看更多的课程请微信关注SkrEric的编程课堂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值