1、数据结构 线性表的链式表示和实现,山西农业大学信息学院 刘 鹏 2010年3月,山西农业大学信息学院 刘 鹏,2,一、回顾线性表顺序存储结构的定义和特点,线性结构(包括表、栈、队、数组)的定义和特点:仅一个首、尾结点,其余元素仅一个直接前驱和一个直接后继。,2. 线性表,逻辑结构:“一对一” 或 1:1 存储结构:顺序、链式 运 算 :插入、删除,3.顺序存储,特征:逻辑上相邻,物理上也相邻; 优点:随机查找快 O(1) 缺点:插入、删除慢 O(n),山西农业大学信息学院 刘 鹏,3,二、线性链表的概念: 以链式结构存储的线性表称之为线性链表。 1、特点:该线性表中的数据元素可以用任意的存储单
2、元来存储。即线性表中逻辑相邻的两元素的存储空间不一定连续。为表示逻辑上的顺序关系,对表的每个数据元素除存储本身的信息之外,还需存储一个指示其直接后继的信息。这两部分信息组成数据元素的存储映象,称为结点。,图一 结点示意图,山西农业大学信息学院 刘 鹏,4,图二 物理存储结构图,山西农业大学信息学院 刘 鹏,5,2、与链式存储有关的术语 1)结点:数据元素的存储映像。由数据域和指针域两部分组成; 2)链表: n 个结点由指针链组成一个链表。它是线性表的链式存储映像,称为线性表的链式存储结构。 3)单链表、双链表、多链表、循环链表: a.结点只有一个指针域的链表,称为单链表或线性链表;b.有两个指
3、针域的链表,称为双链表;c.有多个指针域的链表,称为多链表;d.首尾相接的链表称为循环链表。,山西农业大学信息学院 刘 鹏,6,4)头指针、头结点和首元结点a、头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针。单链表可由一个头指针唯一确定。b、头结点是在链表的首元结点之前附设的一个结点;数据域内只放空表标志和表长等信息;c、首元结点是指链表中存储线性表第一个数据元素a1的结点。,山西农业大学信息学院 刘 鹏,7,一个线性表的逻辑结构为:(ZHAO,QIAN,SUN,LI,ZHOU,WU,ZHENG,WANG),其存储结构用单链表表示如下,请问其头指针的值是多少?,例:,答:头指针是指向链表中第一个结点的指针,因此关键是要寻找第一个结点的地址。,31,头指针的值是31,山西农业大学信息学院 刘 鹏,8,上例链表的逻辑结构示意图有以下两种形式:,区别: 无头结点 有头结点,山西农业大学信息学院 刘 鹏,9,