动态数据结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十一章
一、回顾数组
指针和动态数据结构
1、在数组的第I个位置插入元素 、在数组的第 个位置插入元素 个位置插入元素S For j:=n downto i do A[j]:=a[j+1]; A[I]:=s; 2、删除数组的第I个位置上的元素 、删除数组的第 个位置上的元素 For j:=I+1 to n do A[j-1]:=a[j]; 使用数组进行操作: 使用数组进行操作: 1、只能存储和使用固定数目的元素。 、只能存储和使用固定数目的元素。 2、插入和删除操作在最坏的情况下需要移动大量元素。 、插入和删除操作在最坏的情况下需要移动大量元素。
…
注意:每个结点对应的是一个记录,它是静态的。 注意:每个结点对应的是一个记录,它是静态的。由指针 把多个结点连接起来可以构成动态数据结构。 把多个结点连接起来可以构成动态数据结构。
三、指针类型的定义 Type 指针类型标识符=^结点类型标识符; 结点类型标识符= RECORD 域标识符:类型; 域标识符:类型; END; 如: type Point=^node; Node=record Data:real; Link:point; End; Var p,q:point;
Leabharlann Baidu
二、动态数据结构的基本概念
链表:在程序运行时,会根据程序的需要而增加或减少存储空间且 链表: 不需要提前说明,我们把这种动态的数据结构称为链表。 结点:链表是多个结点的汇集。结点用于存储信息,通常它最少有 结点: 两个域:数据域和指针域。数据域是保存该结点的数据,指针域是 用于保存它下一个结点的地址。 指针: 指针:每个结点都不是独立存在的。通过指向它的指针和它的指针 域所指向的结点建立联系。对链表的操作是通过对指针的操作来完 成的。(头指针只指向第一个结点,是为了操作的方便而设立的一般 用它来标识链表) head 10 20 30 20
四、指针类型的操作
1、分配存储空间 、 New(指针变量) 指针变量) 指针变量 则给结点p分配存储记录的空间 如:new(p),则给结点 分配存储记录的空间,同时由指针 则给结点 分配存储记录的空间,同时由指针p 来指向这个空间。 来指向这个空间。 2、对指针变量及其结点的引用 、 P^.data:=12;P^.link:=q; q^.data:=35;q^.link:=nil(nil是保留字,表示空指针值); 是保留字,表示空指针值) 是保留字
五、指针赋值和记录赋值的区别 P:=q;(指针赋值) P^:=q^;(记录赋值)
指针中保存的是一个地址,记录保存的是该地址中的数据。 指针中保存的是一个地址,记录保存的是该地址中的数据。
一、回顾数组
指针和动态数据结构
1、在数组的第I个位置插入元素 、在数组的第 个位置插入元素 个位置插入元素S For j:=n downto i do A[j]:=a[j+1]; A[I]:=s; 2、删除数组的第I个位置上的元素 、删除数组的第 个位置上的元素 For j:=I+1 to n do A[j-1]:=a[j]; 使用数组进行操作: 使用数组进行操作: 1、只能存储和使用固定数目的元素。 、只能存储和使用固定数目的元素。 2、插入和删除操作在最坏的情况下需要移动大量元素。 、插入和删除操作在最坏的情况下需要移动大量元素。
…
注意:每个结点对应的是一个记录,它是静态的。 注意:每个结点对应的是一个记录,它是静态的。由指针 把多个结点连接起来可以构成动态数据结构。 把多个结点连接起来可以构成动态数据结构。
三、指针类型的定义 Type 指针类型标识符=^结点类型标识符; 结点类型标识符= RECORD 域标识符:类型; 域标识符:类型; END; 如: type Point=^node; Node=record Data:real; Link:point; End; Var p,q:point;
Leabharlann Baidu
二、动态数据结构的基本概念
链表:在程序运行时,会根据程序的需要而增加或减少存储空间且 链表: 不需要提前说明,我们把这种动态的数据结构称为链表。 结点:链表是多个结点的汇集。结点用于存储信息,通常它最少有 结点: 两个域:数据域和指针域。数据域是保存该结点的数据,指针域是 用于保存它下一个结点的地址。 指针: 指针:每个结点都不是独立存在的。通过指向它的指针和它的指针 域所指向的结点建立联系。对链表的操作是通过对指针的操作来完 成的。(头指针只指向第一个结点,是为了操作的方便而设立的一般 用它来标识链表) head 10 20 30 20
四、指针类型的操作
1、分配存储空间 、 New(指针变量) 指针变量) 指针变量 则给结点p分配存储记录的空间 如:new(p),则给结点 分配存储记录的空间,同时由指针 则给结点 分配存储记录的空间,同时由指针p 来指向这个空间。 来指向这个空间。 2、对指针变量及其结点的引用 、 P^.data:=12;P^.link:=q; q^.data:=35;q^.link:=nil(nil是保留字,表示空指针值); 是保留字,表示空指针值) 是保留字
五、指针赋值和记录赋值的区别 P:=q;(指针赋值) P^:=q^;(记录赋值)
指针中保存的是一个地址,记录保存的是该地址中的数据。 指针中保存的是一个地址,记录保存的是该地址中的数据。