java自写代码--循环队列、链队的基本操作

本文详细介绍了循环队列和链队的数据结构,包括它们的Java实现,涉及代码示例、队列操作(入队、出队、长度计算)和相关截图。适合初学者理解两种基础队列数据结构的实现原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、循环队列

1.代码

2.实现截图

二、链队

1.代码

2.实现截图


一、循环队列

1.代码

含初始化、入队列、出队列、求队列长度、打印队列

//循环队列的基本操作
public class queue {

	public int base[];
	public int front;
	public int rear;
	public int data;
	public int maxsize=6;
	
	public queue() {
		this(10);
	}
	
	public queue(int maxsize) {//队列初始化
		base = new int[maxsize];
		front = 0;
		rear = 0;
	}
	
	public boolean queueEmpty() {//判断队列是否为空
		if(front==rear) {
			return true;
		}else{
			return false;
		}
	}
	
	public boolean queueFull() {//判断队列是否满
		if((rear+1)%maxsize==front) {
			return true;
		}else {
			return false;
		}
	}
	
	public void EnQueue(int data) {//循环入队列
		if((rear+1)%maxsize==front) {//当队列满时
			return;
		}
		base[rear]=data;
		rear = (rear+1)%maxsize;//队尾指针加一
	}
	
	public void DeQueue() {//先进先出,循环出队列
		if(front==rear) {//如果队列空
			return;
		}
		front = (front+1)%maxsize;//队头指针加一
	}
	
	public void showQueue() {//打印队列
		for(int i=front;i<rear;i++) {
			System.out.print(base[i]+" ");
		}
	}
	
	public int lenQueue() {//返回队列长度
		int length = (rear-front+maxsize)%maxsize;
		return length;
	}
	
	public static void main(String[] args) {
		queue q = new queue();
		q.EnQueue(1);
		q.EnQueue(2);
		q.EnQueue(3);
		q.EnQueue(4);
		q.EnQueue(5);
		System.out.print("初始队列:");
		q.showQueue();
		
		System.out.println("\t");
		System.out.print("元素循环出去后的队列:");
		q.DeQueue();
		q.showQueue();
		
		System.out.println("\t");
		System.out.print("队列长度为:"+q.lenQueue());
		
	}
	
}

2.实现截图

二、链队

1.代码

包含初始化、入队、出队

//链队的基本操作
public class queueNode {
	
	public int data;
	public queueNode next=null;
	public queueNode front;
	public queueNode rear;
	
	public queueNode() {}
	
	public queueNode(int data) {
		this.data = data;
	}
	
	public void queueAdd(int data) {//入队列
		queueNode node = new queueNode(data);
		
		if(front==null) {//如果队列为空
			front = node;
			rear = node;
			return;
		}
		rear.next = node;
		rear = node;
	}
	
	public void Dequeue() {//出队列
		while(front!=null) {//当队列不为空时
			front = front.next;
			break;
		}
	}
	
	public void printNode() {//打印队列
		queueNode temp = front;
		while(temp.next!=null) {
			System.out.print(temp.data+" ");
			temp = temp.next;
		}
		System.out.print(temp.data);
	}
	
	public static void main(String[] args) {
		queueNode qn = new queueNode();
		qn.queueAdd(1);
		qn.queueAdd(2);
		qn.queueAdd(3);
		qn.queueAdd(4);
		qn.queueAdd(5);
		System.out.print("初始队列:");
		qn.printNode();

		System.out.println("\t");
		System.out.print("元素先进先出后的队列:");
		qn.Dequeue();
		qn.printNode();
	}
}

2.实现截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值