ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

栈与队列

2021-04-05 15:59:58  阅读:168  来源: 互联网

标签:遍历 队头 删除 队列 元素 插入


定义:栈又称为堆栈,是一种运算受限的线性表,这是因为它仅允许在线性表的固定一端(表尾)进行插入、删除和读取元素等运算,不允许在其他任何位置进行运算
特点:后进先出
时间复杂度:O(1)

一、栈的基本操作:

在Java程序里面用Stack来描述栈的操作,这个类定义如下:
public class Stack< E > extends Vector< E >
可以发现Stack是Vector的子类,但他使用的并不是Vector类之中所提供的方法,而是采用如下的几种方法

1.push();
入栈,向栈顶插入一个元素
2.pop();
出栈,删除栈顶元素并返回
3.empty();
判断栈是否为空
4.peek();
获取栈顶元素
5. size();
访问栈中元素个数
6.clean();
清空栈内元素

队列

定义:队列简称队,也是运算受限的线性表,仅允许在表的一段插入,另一端删除。允许插入的一端做队尾,进行删除的一端做队首。
特点:先进先出
时间复杂度:O(1)
在这里插入图片描述

一、队列的基本操作

在Java程序里面用Queue来描述队列的操作,这个类定义如下:
public interface Queue extends Collection< E >
Queue使用时要尽量避免使用Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。 如果要使用前端而不移出该元素,使用element()或者peek()方法。

1.offer();
往队列添加元素如果队列已满直接返回false,队列未满则直接插入并返回true;
2.add();
是对offer()方法的简单封装.如果队列已满,抛出异常new IllegalStateException(“Queue full”);
3.put();
往队列里插入元素,如果队列已经满,则会一直等待直到队列为空插入新元素,或者线程被中断抛出异常.
4.remove();
直接删除队头的元素:
5.peek();
直接取出队头的元素,并不删除.
6.element();
对peek方法进行简单封装,如果队头元素存在则取出并不删除,如果不存在抛出异常NoSuchElementException()
7.pool();
取出并删除队头的元素,当队列为空,返回null;
8.take();
取出并删除队头的元素,当队列为空,则会一直等待直到队列有新元素可以取出,或者线程被中断抛出异常

栈与队列速度快慢

1.栈:只能从顶部取数据,也就是说最先进入栈底的,需要遍历整个栈才能取出来,而且在遍历数据的同时需要为数据开辟临时空间,保持数据在遍历前的一致性。
2.队列:基于地址指针进行遍历,而且可以从头部或者尾部进行遍历,但不能同时遍历,无需开辟空间,因为在遍历的过程中不影响数据结构,所以遍历速度要快。

标签:遍历,队头,删除,队列,元素,插入
来源: https://blog.csdn.net/qq_52355487/article/details/115441157

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有