顺序存储结构的优缺点引出单链表结构类型定义


顺序存储结构的评价:

优点:

① 是一种 随机存取 结构,存取任何元素的时间是一个常数,速度快;

② 结构简单,逻辑上相邻的元素在物理上也是相邻的;

③ 不需要使用指针,节省存储空间。

 

缺点:

① 插入和删除元素要移动大量元素,消耗大量时间;

② 需要一块连续的存储空间;

③ 插入元素可能发生“溢出”;

④ 自由区中的存储空间不能被其他数据占用(共享),存在浪费空间的问题。

内存:网格中,2k,5k,3k 指的是自由区中未被使用的存储空间。

2k 占用 5k 占用 3k

 

 

单链表:单链表指的是线性表的每个节点分散地存储在内存空间中,先后依次用一个指针串联起来。

data:数据域,用于存放元素

next:指针域,用于存放下一个结点地址的部分

单链表分为:不带表头结点  和  带表头结点

不带表头结点的单链表:单链表的头指针指向第一个首元结点。

 

 

head == NULL 时,为空表,否则为非空表。.

当它是非空表时,在首节点 *head 中会存放数据。

带头结点的只须 head 就可以访问第一个元素。

 

带表头结点 的单链表:

 

 

 有表头结点 单链表的头指针指向头结点。

head 指向表头节点,

head -> data 不放元素

head -> next 指向首节点 a1

当 head -> next == NULL,为空表,否则为非空表。

以上几句话结合截图来看会更清晰明了。

 

单链表的结点结构:

① struct:这是结构体关键字,通过存放一组不同类型的数据,来定义一个结构。其定义形式为:

struct 结构体名称 {

  结构体所包含的变量或数组

};

结构体是一种集合,里边包含了多个变量或数组,它们类型可以相同,也可以不同,每个这样的变量或数组

都称为结构体的成员(Member)。例如我们定义一个 student 结构体:

注意!!!!大括号后边的分号 ";" 不能少,这是一条完整的语句。

struct stu{

  char *name;// 姓名

  int num;      // 学号

  int age;       // 年龄

};

 

思考题:单链表中的结点有两个域吗?

存储每个结点需要有两个域,一个是数据域,另一个是指针域


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM