当前位置:网站首页>动态链表3队列的链式存储结构(LinkedQueue实现)
动态链表3队列的链式存储结构(LinkedQueue实现)
2022-07-27 16:08:00 【zh_Tnis】
1.队列的链式存储结构定义。
- 队列的链式存储结构,其实就是线性表的单链表。这里的队列同样的具备头结点指针head,head位置不存放元素。尾指针rear,rear位置存放元素。
- 空队列的判断,和线性表一样,当元素总和为空时或者头结点的下一跳指向null,也就是head==rear。
- 队列的元素进出特点就和栈的链式不一样了,队列的是先进先出。
- 队列的实现接口是Queue。
2.LinkedQueue的定义。

+Linkedlist list //队列的链式由线性表的链式实现,创建一个LinkedList<E>类型的变量list
+LinkedQueue() //构造函数的搭建
+String toString() //toString的方法函数
+boolean equals(Object obj) //equals的方法函数
与栈的链式同样,队列的构建一样由线性表的链式实现,与队列的顺序存储有异曲同工之意。可以对照1线性表的顺序存储和2队列的顺序存储加1线性表的链式存储观看琢磨。
①进队列图解。
进队列的意思就是在线性表的最后加入一个元素,每次进都是在队尾进入,之前进的元素都累积在后面。还有的就是,尾指针rear都会移动到进入元素对应的位置。

②出队列图解。
出队列的意思就是在头结点的下一跳删除该位置元素,还有一个需要注意的是,如果这个队列链式只存在一个元素了,那么出队列一个后,尾指针rear就要移动到头指针head的位置,即是队列为空。

3.队列的链式的toString()方法。
和栈的链式基本一样。
1、使用线程不安全的StringBuilder类创建对象sb。
2、对队列的链式判断是否为空,为空直接返回sb.append("[ ]");。
3、不为空则先连接sb.append("[");。
4、之后使用获得元素方法,使用for循环,将元素开始连接,每连接一次,只要未到达最后一个元素,那么后边连接逗号sb.append(',');,当到达最后一个元素后,在最后连接的元素后边连接上sb.append(']');。
public String toString(){
StringBuilder sb=new StringBuilder(); //1
if(isEmpty()){ //2
sb.append("[]");
}else{
sb.append("["); //3
for(int i=0;i<getSize();i++){ //4
sb.append(list.get(i));
if(i==getSize()-1){
sb.append(']');
}else{
sb.append(',');
}
}
}
return sb.toString();
}4.队列的链式的equals(Object obj)方法。
1、先对传入的对象obj判断是否为空,为空则返回false。
2、再对该对象obj与this直接判断是否相等,相等直接返回true。
3、最后比较里边内容,将obj强转成LinkedQueue<E>即可开始。
4、返回 return this.list.equals(l.list);。
public boolean equals(Object obj){
if(obj==null){ //1
return false;
}
if(obj==this.list){ //2
return true;
}
if(obj instanceof LinkedQueue){
LinkedQueue<E> l=(LinkedQueue<E>) obj; //3
return list.equals(l.list);//4
}
return false;5.队列的链式全部代码实现。
package com.oupeng.p5链表;
import com.oupeng.p3队列.Queue;
public class LinkedQueue<E> implements Queue<E> {
private LinkedList<E> list; //队列的链式由线性表的链式实现,创建一个LinkedList<E>的变量list
public LinkedQueue(){
list=new LinkedList<E>(); //无参构造函数的搭建
}
@Override
public int getSize() { //队列链式获取元素总和
return list.getSize(); //也就是线性表链式的元素总和,返回
}
@Override
public boolean isEmpty() { //队列链式判断是否为空
return list.isEmpty(); //也就是线性表链式是否为空
}
@Override
public void enqueue(E e) { //队列链式的元素进出是先进先出
list.addLast(e); //也就是线性表链式的尾指针下一跳的插入元素e
}
@Override
public E dequeue() { //队列链式的元素进出是先进先出
return list.removeFirst(); //也就是线性表链式的头结点下一跳数据data的删除
}
@Override
public E getFront() { //队列链式第一个元素的获取
return list.getFirst(); //也就是线性表链式头结点下一跳数据data的获取返回
}
@Override
public E getRear() { //队列链式最后一个元素的获取,尾指针对应的元素
return list.getLast(); //也就是线性表链式尾指针对应元素的获取
}
@Override
public void clear() { //队列链式的整队清空
list.clear(); //也就是线性表链式的全表清空
}
public String toString(){
StringBuilder sb=new StringBuilder();
if(isEmpty()){
sb.append("[]");
}else{
sb.append("[");
for(int i=0;i<getSize();i++){
sb.append(list.get(i));
if(i==getSize()-1){
sb.append(']');
}else{
sb.append(',');
}
}
}
return sb.toString();
}
public boolean equals(Object obj){
if(obj==null){
return false;
}
if(obj==this.list){
return true;
}
if(obj instanceof LinkedQueue){
LinkedQueue<E> l=(LinkedQueue<E>) obj;
return list.equals(l.list);
}
return false;
}
}
边栏推荐
- 多表查询
- 力压谷歌、英伟达!阿里含光800芯片再获权威测试世界第一
- hutool- 数组工具
- Class not found: “com.parkManagement.dao.DaoTest 测试找不到测试类
- 动态链表2栈的链表存储结构(LinkedStack实现)
- Evaluation index of machine learning (II) -- classification evaluation index
- Error launching IDEA
- 嘉楠耘智已完成预路演,预计11月20日登陆纳斯达克
- In the first week of June, risk control of e-shield business paid attention to 15 institutions such as New Oriental XRS, which were fined
- 英特尔发布新一代Movidius VPU:性能提升10倍,功耗仅30W
猜你喜欢

Big gap? Requirements and conditions for candidates with different academic qualifications to take the postgraduate entrance examination

Introduction to ef framework

canvas根据坐标点绘制图形

Learn from things | Yidun mobile terminal isomorphism practice, improve the official website interaction experience in a few steps

Evaluation index of machine learning (I) -- regression evaluation index

Bug records using distributed framework WCF

What's the use of games| Game application value research case collection

Dbeaver connection MySQL error: the server time zone value 'Ö Ð¹ ú±ê ×¼ ʱ ¼ ä‘ is unrecognized or represents more than

Six relationships of classes -- the difference between dependency and Association

GIS数据漫谈(五)— 地理坐标系统
随机推荐
Golang waits for a group of goroutines to complete with the return value (2)
Marvell公布旗下Arm服务器芯片路线图,下一代性能将比ThunderX2高两倍
org.apache.catalina.core.StandardContext.startInternal Context [] startup failed due to previous err
多线程导入数据并生成错误文件用redis存储
使用分布式框架WCF出现的BUG记录
MySql代码数据库创建 停车管理系统 外键
Dbeaver connection MySQL error: the server time zone value 'Ö Ð¹ ú±ê ×¼ ʱ ¼ ä‘ is unrecognized or represents more than
How can we carry out NLP cross language knowledge transfer?
动态链表2栈的链表存储结构(LinkedStack实现)
查找表中多余重复记录并删除保留最小一个
解决Reids不能被其他IP访问
CPU introduction
vue使用keep-alive实现页面缓存
[Southwest University] information sharing of postgraduate entrance examination and re examination
WPF makes login interface
多线程实现循环
同心向前,Google Play 十周年啦!
Configuration and basic use of vim
@DateTimeFormat 接收不到时分秒,转换时报类型异常
ts学习笔记-interface