数据结构经典教程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Date:9 January 2019
IT Education & Training
数据域
指针域

data
next
图只有一个指针域的结点结构
Date:9 January 2019
IT Education & Training
• 根据指针域的不同和结点构造链的方法不同, 链式 存储 结构存储线性结构数据元素的方法主要有单链、 单循环链和双向循环链等三种。 这三种结构中每一 种又有带头结点结构和不带头结点结构两种。 头结 点是指头指针所指的不存放数据元素的结点。 其中, 带头结点的链式结构在表的存储中更为常用, 不带 头结点的链式结构在堆栈和队列的存储中更为常用。
Date:9 January 2019
IT Education & Training
头指针
头指针
a0
a1

an - 1
(a )
(b)
图2 带头结点的单链结构 (a)空链; (b)非空链
Date:9 January 2019
IT Education & Training
头指针
头指针
a0
a1

an - 1
Date:9 January 2019
IT Education & Training
基本概念
• 数据:是对客观事物的符号表示,在计算机科学中 是指所有能输入到计算机中并被计算机程序处理的 符号的总称。 • 数据元素:是数据的基本单位,在计算机程序中通 常作为一个整体进行考虑和处理。 • 数据结构:是相互之间存在一种或多种特定关系的 数据元素的集合。
Date:9 January 2019
IT Education & Training
数据结构的三个方面:
线性结构
数据的逻辑结构 非线性结构 数据的存储结构
线性表 栈 队 树形结构
图形结构
顺序存储
链式存储百度文库
数据的运算:检索、排序、插入、删除、修改等
Date:9 January 2019
IT Education & Training
(a )
(b )
图3 带头结点的单循环链结构 (a)空链; (b)非空链
Date:9 January 2019
IT Education & Training
头指针
头指针
a0
Date:9 January 2019
IT Education & Training
• 我们把图中头结点的数据域部分涂上阴影, 以明显 表示该结点为头结点。 图2和图3中的指针域为指向 下一个结点的指针。 图 4 中结点右部的指针域为指 向下一个结点的指针, 结点左部的指针域为指向上 一个结点的指针。 在以后的图示中, 头指针将用 head表示。
• 数据结构如下图
typedef struct { Data_t data;
//数据域
Node_t* next; //后继域 }Node_t, *PNode_t; //提供的操作有 :初始化、插入、删除等。
Date:9 January 2019
IT Education & Training
链式存储结构
线性表
• 顺序存储结构 特定:借助元素在存储器中的相对位臵(即,物理位 臵相邻)来表示数据元素之间的逻辑关系。 缺点: 插入、删除时,需移动大量数据。 一次性分配内存空间。 表的容量难以扩充。
Date:9 January 2019
IT Education & Training
图顺序存储结构内存结构示意图
Date:9 January 2019
IT Education & Training
• 链式存储结构存储线性结构数据元素集合的方法是 用结 点(Node)构造链。 线性结构数据元素的特 点是:除第一个和最后一个元素外,每个元素只有 一个惟一的前驱和一个惟一的后继。链式结构中每 个结点除数据域外还有一个或一个以上的指针域, 数据域用来存放数据元素,指针域用来构造数据元 素之间的关系。只有一个指针域的结点结构如图所 示。
Date:9 January 2019
IT Education & Training
1.1 线性表以及其应用(2)
– 动态线性表 • 特征:表中节点的存储是不连续的,一般节点的数量是不固定的; • 存储表示如下图
数据1 后继 数据2 后继 数据3 后继 …… …… 数据n-1 后继 数据n end
• 链式存储结构是计算机中的另一种最基本和最主要 的数据存储结构。 和顺序存储结构不同, 初始时链 式存储结构为空链, 每当有新的数据元素需要存储 时用户向系统动态申请所需的存储空间插入链中。
Date:9 January 2019
IT Education & Training
链式存储结构
• 每个结点有两个域,其中存储数据元素信息的域称 为整数域;存储直接后继存储位臵的域称为指针域。 struct Node{ int data; struct Node *Next; }; typedef struct Node Node_t;
后继:2 后继:3 后继:4 …… 后继:n end
typedef struct { • 数据结构如下图
Data_t data; //数据域 int next; //后继域 }Node_t, *PNode_t; //提供的操作有 :初始化、插入、删除等。
Date:9 January 2019
IT Education & Training
主要内容
• 1.1 线性表以及其应用 • 1.2 栈、队列 • 1.3 排序、查找
Date:9 January 2019
IT Education & Training
1.1 线性表以及其应用(1)
• 线性表
– 分为静态线性表和动态线性表 – 静态线性表 • 特征:表中节点的存储是连续的,占用一块连续存储区,一般节 点的数量是固定的; …… 数据1 数据2 数据3 数据n-1 数据n • 存储表示如下图
Date:9 January 2019
IT Education & Training
第一部分 数据 结构基础知识
Date:9 January 2019
IT Education & Training
数据结构
• 数据结构:是一门研究非数值计算的程序设计问题 中计算机操作对象以及它们之间的关系和操作等等 的学科。
相关文档
最新文档