第二章–线性结构
线性结构是按顺序存储的一种结构,常用的线性结构有线性表,队列,栈,数组等。
1、数组:
数组是最为常用的一种线性结构,他的特点有:
1.数组是相同数据类型的元素的集合。
2.数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。
3.数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。
4.敲写代码较为简便,并且可直接依靠数组下标名找出相应位置的元素
2、链表:
链表与数组不同,他是以链式存储的,他能更方便的插入与删除元素,但用链式存储时,敲写代码比顺序存储复杂许多。链表的特点有:
1.存储单元可以不连续,所以想要找到一个想要的元素必须先找到他的前一个元素(单向链表)才可。
2.插入元素时可执行相对的操作便可直接插入,不用像数组那样将后面的元素依次往后移从而浪费大量时间。
3.存储是动态的,于是乎链表里面有多少元素即占多少元素占用的空间,不会像数组那样需事先开辟一个大的静态空间。
4.可以同时存放多类的元素,如我一个结构体里可以存放int 、double、char、甚至还能存放一个数组、链表。
堆栈
堆栈是一种计算机领域中常使用的数据结构,我们经常使用的函数调用,递归都是存放在堆栈里面,于是可见,这种结构不能忽视。
而堆栈也是一种线性结构,他有两种表示法
- 当元素为统一类型的时候我们经常使用数组来执行堆栈操作
- 当元素类型多样时我们使用链表或者结构体数组去操作
堆栈的特点有:
- 只能在一端进行插入和删除操作
- 它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
- 栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
队列
队列和栈一样是一种特殊的线性结构,他只能从对头进行删除操作,队尾进行插入操作。并且与栈一样有两种表示法
我们常见的bfs搜索算法便是由队列进行的。
队列的特点:
- 只能在对头删除,队尾插入
- 它按照先进先出的原则存储数据,先进来的数据先被使用。