栈,队列,数组,链表的认识和区别


stack,又称堆栈,它是运算受限的线性表,其限制是允许在栈的一边进行增删操作,其它位置不可。
采用栈方式的元素有以下特点
1.先进后出:先存储的元素,后面才能拿出来(就好比一个盛饭的容器,总是从上面先取饭)。
2.栈的入口,出口都是栈的顶端位置
栈,队列,数组,链表的认识和区别
队列
它是运算受限的线性表,其限制是允许在队列的一段插入,另一端删除
采用队列方式的元素有以下特点
1.先进先出:先存储的元素,最先拿出来(就好比食堂买饭,先来先买,买了就走,后面来的就排在后面)
2.队列的入口,出口各占一端
栈,队列,数组,链表的认识和区别
数组
数组是在内存中开辟一端连续的存储空间,并在此空间放置元素,每个元素对应的空间有自己的空间名字。
采用数组方式的元素有以下特点。
1. 查找元素快
2. 指定索引增删元素
由于数组的长度是固定的,即每当创建出来的数组长度不可变,所以
每次增加删除数组元素,都会销毁原来的数组,重新创建一个新的数
组。原来的数组会被垃圾回收掉。
缺点:由于数组储存于堆内存中,所以每当进行修改的都要平凡的进行销毁创建数组效率低下。

链表
不连续的储存空间。
采用链表方式的元素有以下特点
查询慢:每次查询均从头开始
增删快:链表结构增加或者删除一个元素,链表的整体结构没有影响
链表中每一个元素也称之为一个节点,一个节点包含了一个数据源(储存数组),
一个指针域(储存地址)。
–》分类
单向链表:链表中只有一条链子,其中的元素没有顺序,即取出数据时的顺序可能
会和储存时的顺序不一致
双向链表:有两条链子,一条专门用来记录数据的顺序,是一个有序的集合