队列
队列可以看做是高速路口,进出口需要车辆排成一列,这就是线性结构,在车队中的车只能在入口选择是上高速还是原路返回,简单定义是一种特殊的线性结构,只能在head出做处理。
栈
我认为栈的结构很有趣,拿一个高中数学题来说,三根柱子上套着不同大小的轮盘,要将他们按大小排在一根柱子上,这是一个数列题,但是我们同样可以用算法解决,这时候柱子想相当于一个栈。栈就像一根柱子套上不同大小,或者有编号的轮盘用来标志他们,每次操作都要按照顺序,例如要想取下最里面的轮盘就要一次从外到里一次去下所有轮盘。
链表
这就是建立一个一维线性结构,但要用一些方法将他们各个元素连接起来,我这里有两种方法——指针、模拟链表。
指针
语言基础里应该都会学,指针链接链表的方法是建立一个结构体,这个结构体包含两个部分一个用来储存数据,一个用来指向下一个结构体。我们可以想象一下链条,每根链条的每个单元都是一个固体然后又存在一个与后面相连的结构。指针的优势在于,一对数列中要按顺序插入一个数,这样只需将两个指针改变,不需要移动很多的数据。
模拟链表
它的方式是两个一维数组,表示一个一维结构,第一个date数组存数据,第二个right数组链接数据这种方式很好理解,和指针的作用相似。