第21章 数据结构
前面的章节中已经对C语言的基本语法机制作了介绍,但要写出好的程序,从而解决实际问题,还要了解一些数据组织方面的内容,即数据结构的相关知识。常见的数据结构包括链表、栈、队列、树、图和线性表等。本章主要从链表、栈和队列、自定义类型入手,介绍数据结构的一些基本知识。
本章包含的知识点有:
·链表的结构
·链表的各种操作
·栈和队列的各种操作
·自定义类型
21.1 链表
数组对应着一个连续存储的内存块,将同类型的元素一个个地排列起来,是组织数据的很好的手段。声明数组时需要告诉编译器数组的大小(即元素的个数),以便开辟足够大小的内存,但解决实际问题时,元素的个数常常是不确定的,此时该如何声明数组呢?如果指定的数组太小而实际数据太多,无法满足要求;可如果指定的数组太大而实际却用不了那么多,又会造成内存浪费。
在这种背景下,有人提出用链表来存储数据,像用线串珠子一样,元素不一定需要连续的内存空间,只要在需要存储数据时,再申请存储空间(动态申请内存空间或栈分配)即可,并用指针将数据一个一个链接起来,称为链表,如图21-1所示。