第二章 线性表 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.

Slides:



Advertisements
Similar presentations
報告書名:父母會傷人 班級:二技幼四甲 姓名:吳婉如 學號:1A2I0034 指導老師:高家斌
Advertisements

时间与我们的世界 Pb 段心蕊.
媽,我們真的不一樣 青少年期與中年期 老師: 趙品淳老師 組員: 胡珮玟4A1I0006 馬菀謙4A1I0040
情緒與壓力管理─背部舒緩 指導老師:彭易璟 第六組組員:會資三乙 499A0047 謝宛霖 會資三乙 499A0019 吳汶諭
班級:二幼三甲 姓名:郭小瑄 、 詹淑評 學號:1A2I0029 、1A2I0025
指導老師:陳韻如 姓名:吳宜珊 學號:4A0I0911 班級:幼保二乙
第三章 鏈結串列 Linked List.
第二章 线性表 £2.4 线性表的应用 £2.1 线性表的类型定义 £2.2 线性表的顺序存储结构 £2.3 线性表的链式存储结构
第二章 线性表 2.1 线性表的逻辑结构 一. 线性表定义如下:
第三章 链表 单链表 循环链表 多项式及其相加 双向链表 稀疏矩阵.
§1 线性空间的定义与性质 ★线性空间的定义 ★线性空间的性质 ★线性空间的子空间 线性空间是线性代数的高等部分,是代数学
傳統童玩遊戲創新 組別:第八組 班級:幼保二甲 組員: 4A0I0005柯舒涵 4A0I0011謝孟真
第二章 线性表 ⒈教学内容:2.1 线性表逻辑结构; 2.2 线性表的顺序存储及运算实现; 2.3 线性表的链式存储和实现。
行為改變技術 班級:幼保二甲 組員: 4A10H081 蘇靖婷 4A1I0014 陳佳瑩 4A1I0023 尤秀惠 4A1I0074 邱乃晏 指導老師: 楊淑娥 老師.
單向鏈結串列 Singly Linked Lists.
其他类型的链表主要内容 静态链表 循环链表 双向链表.
计算机软件技术基础 数据结构与算法(2).
第三章 栈和队列 Stack and Queue
第二章 线性表 线性表 顺序表 链表 顺序表与链表的比较.
数据结构 第2章 线性表 吴忠华.
数 据 结 构 Ch.2 线性表 计 算 机 学 院 肖明军
第三章 线性表 3.1 线性表的类型定义 3.2 顺序存储的线性表 3.3 链式存储的线性表 3.4 有序表 3.5 顺序表和链表的综合比较.
线性表 顺序表 单链表 循环链表 双向链表 多项式
·线性表的定义及ADT ·线性表的顺序存储结构 ·线性表的链接存储结构 · 单向循环链表 · 双链表、双向循环链表 · 一元多项式的加法
第2章 线性表(三) 1/.
数据结构 第二章 线性表.
制作:崔广才
数据结构 Data Structure 中南大学 主讲人:王国军,郑瑾 中南大学信息院计科系
第 4章 串和数组(二) 本讲主要内容: 数组的定义及其顺序表示和实现。 矩阵的压缩存储。 广义表的定义。
教 师:曾晓东 电 话: E_mail: 计算机软件技术基础 教 师:曾晓东 电 话: E_mail:
本 章 说 明 2.1 线性表的类型定义 2.2 线性表的顺序表示和实现 2.3 线性表的链式存储结构 2.4 循环链表和双向链
西安交通大学计教中心 ctec.xjtu.edu.cn
第 1 章 数据结构 1.1 基本数据结构与算法 1.2 线性表 1.3 栈和队列 1.4 树和二叉树 1.5 查找 1.6 内部排序 65
第2章 线性表 2.1 线性表 2.2 顺序表 2.3 单链表 2.4 循环单链表 2.5 双向链表 2.6 仿真链表
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
第2章 线性表 丽水学院工学院.
第2章 线性表 2.1 线性表的类型定义 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.4 一元多项式的表示.
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
第二章 线性表 2.1 线性表的类型定义 2.2线性表的顺序存储 2.3线性表的链式存储 2.4一元多项式的表示和相加.
(知识点三) 2.3 线性表的链式表示和实现 本节将介绍线性表的另一存储结构—— 链式存储及其对应的操作。
线性表练习.
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
cn/~dongeliu/dsa.html 刘 东 信息学院6系 中国科学技术大学
第三章 链表 单链表 (Singly Linked List) 循环链表 (Circular List) 多项式及其相加
第七章 操作符重载 胡昊 南京大学计算机系软件所.
顺序表的插入.
第2章 线性表 本章主要介绍下列内容 线性表的定义和基本操作 线性表的顺序存储结构 线性表的链式存储结构 线性表的应用举例.
第二章 线性表.
第三章 链表 单链表 循环链表 多项式及其相加 双向链表 稀疏矩阵.
严蔚敏、吴伟民编著 清华大学出版社 学习网站:中国网页设计
第五章 递归与广义表 递归的概念 递归过程与递归工作栈 递归与回溯 广义表.
顺序表的删除.
香港傳統的農村生活.
单链表的基本概念.
顺序查找.
线性结构 线性结构的特点: 线性结构的种类 在数据元素的非空有限集中, (1)存在唯一的一个被称做“第一个”的数据元素;
第 四 讲 线性表(二).
第三章 数据组织与处理.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
基于列存储的RDF数据管理 朱敏
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
数据结构概论 第5章 数组和广义表 董黎刚 浙江工商大学信电学院.
算法3.3 void InitList_sq(SqList &L,int msize=LIST_INIT_SIZE)
插入排序的正确性证明 以及各种改进方法.
第二章 线性表 线性表是一种最简单的线性结构 线性结构是一个数据元素的有序(次序)集.
第二部分 数据结构—— 用面向对象方法与C++描述.
第七章 搜索结构 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
§4.5 最大公因式的矩阵求法( Ⅱ ).
Presentation transcript:

第二章 线性表 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件

本章主要内容 线性表 顺序表 单链表 线性表的变形 双向链表 循环链表 多项式及其运算

线性表 定义:n个数据元素的有限序列,记为(a1,a2,…,an) 线性表的性质 ai是线性表中的数据元素 n是线性表的长度 除第一个元素外,其他每一个元素有一个且仅有一个直接前驱。 除最后一个元素外,其他每一个元素有一个且仅有一个直接后继。 a1 an

线性表 线性表的一些基本操作 线性表的存储方式 查找 插入 删除 ∙∙∙∙∙∙ 基于数组 (顺序表) 基于链表 (链表) 基于散列 (散列表) ……

顺序表 顺序表是线性表基于数组的存储表示 a1 a2 ∙∙∙ ai ai+1 an 1 n-1 i i-1 存储空间 下标 SIZE-1

顺序表 顺序表的查找操作 25 34 57 16 48 09 63 ∙∙∙ 1 4 3 2 5 6 查找16 平均比较次数 1 4 3 2 5 6 查找16 平均比较次数 Search(Type x) { for(i=0; i<n; i++) if(a[i] == x) return i+1; return 0; } 假设每个值查找概率相同

顺序表 顺序表的插入操作 25 34 57 16 48 09 63 ∙∙∙ 1 4 3 2 5 6 7 顺序表大小加1 插入 50 1 4 3 2 5 6 7 顺序表大小加1 插入 50 平均移动次数:

顺序表 顺序表的删除操作 25 34 57 16 48 09 63 ∙∙∙ 1 4 3 2 5 6 顺序表大小减1 删除16 平均移动次数:

顺序表 顺序表的优点 无需保存与逻辑关系相关的信息 给定下标时,存取速度快 顺序表的缺点 插入删除操作移动开销大 需要固定的存储空间

单链表 单链表也是线性表的一种存储表示 data link 单链表的一个结点: struct LinkNode { Type data; LinkNode *link; }; LinkNode *first = null; a1 first a2 a3 an null ∙∙∙ 单链表结构:

单链表 单链表的查找操作 a1 first a2 a3 an ∙∙∙ null 查找a3 p p p p = first; while (p!=null) { if(p->data == a3) { return p; } p = p->link; return null;

单链表 单链表的插入操作 在非空表头部或空表插入 first a1 a2 ∙∙∙ anew null pnew->link = first; first = pnew; pnew

单链表 单链表的插入操作 在非空表头部或空表插入 在非空表中部或尾部插入 p ∙∙∙ ai ai+1 ∙∙∙ pnew->link = p->link; p->link = pnew; anew null pnew

单链表 单链表的删除操作 在单链表头部删除 first a1 a2 ∙∙∙ p p = first; first = first->link; delete p;

单链表 单链表的删除操作 在单链表头部删除 在单链表中部或尾部删除 p ∙∙∙ ai ai+1 ai+2 ∙∙∙ temp temp = p->link; p->link = temp->link; delete temp;

单链表 单链表的删除操作 在单链表头部删除 在单链表中部或尾部删除 空链表删除:无结点删除

带附加头结点的单链表 附加头结点 struct LinkNode { Type data; LinkNode *link; }; 不带附加头结点单链表结构: a1 first a2 a3 an null ∙∙∙ 不带附加头结点头指针初始化: LinkNode *first = null; a1 first a2 a3 an null ∙∙∙ 带附加头结点单链表结构: 带附加头结点时头指针初始化: LinkNode *first = new LinkNode; first->link = null;

带附加头结点的单链表 附加头结点 插入操作(空表、表头、中部、尾部操作相同) first pnew ax null a1 a2 a3 ∙∙∙ an null

带附加头结点的单链表 附加头结点 插入操作(空表、表头、中部、尾部操作相同) 删除操作(表头、中部、尾部操作相同) first temp = p->link; p->link = temp->link; Delete temp; a1 a2 a3 ∙∙∙ an null 删除a1 temp

带附加头结点的单链表 附加头结点优点 附加头结点缺点 空表和非空表的表示统一 在任意位置插入删除代码统一 浪费了一个节点的空间 作业: 顺序表和链表存储表示的优缺点 若表的长度经常动态变化,应使用什么存储表示?为什么? 若表很少进行插入删除操作,应使用什么存储表示?为什么? 针对不带附加头结点的单链表,找到值为x的结点 (假设只有一个结点的值为x),并删除该结点,函数名 FindAndDelete(LinkNode *first, Type x)

单链表的应用:多项式运算 多项式

单链表的应用:多项式运算 多项式的表示 数组表示 动态数组表示(动态申请空间) 只保存非零系数 a0 a1 a2 ∙∙∙ an coef 下标 1 2 n maxDegree a0 a1 a2 ∙∙∙ an coef 下标 1 2 n a0 a1 a2 ∙∙∙ am coef 下标 1 2 n maxDegree e0 e1 e2 exp

单链表的应用:多项式运算 多项式的表示 单链表 PA(x) = 3 + 7x11 - 9x51 3 -9 51 null 7 11 -9 51 null 7 11 firstA

单链表的应用:多项式运算 多项式的加法运算 PA(x) = 3 + 4x2 - 6x3 PB(x) = 2x1 - 5x2 firstA 3 4 2 -6 3 null pa firstB 2 1 -5 2 null pb firstC null 3 null 2 1 null -1 2 null -6 3 null

单链表的应用:多项式运算 多项式的乘法运算 PA(x) = 3 + 4x2 - 6x3 PB(x) = 2x1 - 5x2 firstA 3 4 2 -6 3 null pa firstB 2 1 -5 2 null pb pb pb coef 1 2 3 4 5 3*2 3*-5 4*2 4*-5 -6*-5 + -6*2 6 -15 8 -32 30 Pc=6x-15x2+8x3-32x4+30x5

作业:使用无附加头结点单链表,实现多项式加法和乘法运算

静态链表 数组中每一个元素附加一个链接 first 25 45 92 57 11 36 78 null 1 2 3 4 5 6 7 25 1 2 3 4 5 6 7 25 92 57 36 78 11 45 1 7 3 6 5 -1 4 2