举例说明:在邮局经常需要去处理邮件,邮件会从下至上堆积成为一个栈,此时处理的方式就是先处理最上面的邮件,这种方式只有能够在合理的时间内从容处理完所有的信件,这种工作方式才不会产生太大麻烦,否则最底层的信件就将会永远无法得到处理
特性就是FIFO
优先级队列的方式就是在每个入队的元素当中加上关键字的判断,使得这个优先级的队列进行内部排序,使得整个队列变成一个有序队列,优先级队列可以保证重要的任务先执行,但是如果不断的向优先级队列当中插入优先级高的任务,可能导致所有优先级低的队列永远都得不到执行的机会
链表就好像是火车,它的每个链表对象都会引用下一个或者上一个链表对象,所以链表相比于数组的优点就是增加一个链表节点或者删除一个链表节点都会比数组的快,相对来说数组的根据索引查询就会比链表快,但是如果是不知道索引的线性搜索查询,其实本质上速度跟链表并没有什么区别
单向链表类似于栈,特点:
就是在双向链表的对象当中引入了对最后一个节点的引用,针对于最后一个节点也可以像对第一个节点一样的进行相对应的引用操作,并且在每个链表节点当中不仅可以找到它的上一个节点,也可以找到他的下一个节点
简单来说就是有顺序的链表结构
在有序链表当中插入或者删除某一项最多需要O(N)次比较,平均是N/2次,因为必须要沿着链表一步步走才能找到正确的位置,可以在O(1)时间内找到或者删除最小值,因为它总是在表头,如果需求时一个应用频繁的存取最小值,而且不需要快速的插入,那么有序链表是一个非常有效的方案选择,例如优先级队列就可以使用有序链表来进行实现
双向链表要区分于双端链表,双端链表是可以找到该节点的上一个节点的,但是双向链表只是能够从链表的两端同时进行遍历,并不能够找到任意一个节点的上一个节点
备注:有序数组查询快,无序数组索引查询快,链表增加和删除快