Java中如何编写实现队列插入删除功能的具体方法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计836个文字,预计阅读时间需要4分钟。
如何在Java中实现队列的插入和删除操作?队列是一种常用的数据结构,遵循先进先出(FIFO)的原则。在Java中,可以使用数组或链表来实现队列。
下面将分别介绍两种实现方式,并给出相应的代码示例:
使用数组实现队列
javaclass QueueUsingArray { private int[] data; private int front; private int rear; private int size; private int capacity;
public QueueUsingArray(int capacity) { this.capacity=capacity; this.data=new int[capacity]; this.front=this.size=0; this.rear=capacity - 1; }
public boolean isEmpty() { return (size==0); }
public boolean isFull() { return (size==capacity); }
public void enqueue(int item) { if (isFull()) { System.out.println(Queue is full); return; } rear=(rear + 1) % capacity; data[rear]=item; size++; }
public int dequeue() { if (isEmpty()) { System.out.println(Queue is empty); return -1; } int item=data[front]; front=(front + 1) % capacity; size--; return item; }}
使用链表实现队列
javaclass Node { int data; Node next;}
class QueueUsingLinkedList { private Node front, rear;
public QueueUsingLinkedList() { front=rear=null; }
public boolean isEmpty() { return (front==null); }
public void enqueue(int item) { Node newNode=new Node(); newNode.data=item; newNode.next=null;
if (rear==null) { front=rear=newNode; } else { rear.next=newNode; rear=newNode; } }
public int dequeue() { if (isEmpty()) { System.out.println(Queue is empty); return -1; } int item=front.data; front=front.next; if (front==null) { rear=null; } return item; }}
如何在Java中实现队列的插入和删除操作
队列是一种常用的数据结构,它遵循先进先出(FIFO)的原则。在Java中,可以使用数组或链表实现队列。下面将分别介绍两种实现方式,并给出代码示例。
- 使用数组实现队列:
数组实现队列的思路是,使用一个数组作为队列的底层数据结构,通过维护头尾指针来实现插入和删除操作。
代码示例:
public class ArrayQueue { private int[] queueArray; // 队列数组 private int front; // 队头指针 private int rear; // 队尾指针 private int maxSize; // 队列的最大容量 public ArrayQueue(int size) { queueArray = new int[size]; maxSize = size; front = 0; rear = -1; } // 入队操作 public void enqueue(int data) { if (isFull()) { throw new IllegalStateException("队列已满,无法入队"); } rear++; queueArray[rear] = data; } // 出队操作 public int dequeue() { if (isEmpty()) { throw new IllegalStateException("队列为空,无法出队"); } int data = queueArray[front]; front++; return data; } // 判断队列是否为空 public boolean isEmpty() { return (rear + 1 == front); } // 判断队列是否已满 public boolean isFull() { return (rear == maxSize - 1); } }
- 使用链表实现队列:
链表实现队列的思路是,通过维护一个指向队头的指针和一个指向队尾的指针来实现插入和删除操作。每次插入新元素都将其添加到队尾,并将队尾指针指向新元素;每次删除元素都将队头的指针指向下一个元素。
代码示例:
public class LinkedQueue { private Node front; // 队头指针 private Node rear; // 队尾指针 public LinkedQueue() { front = null; rear = null; } // 节点类 private class Node { private int data; // 数据 private Node next; // 指向下一个节点的指针 public Node(int data) { this.data = data; this.next = null; } } // 入队操作 public void enqueue(int data) { Node newNode = new Node(data); if (isEmpty()) { front = newNode; rear = newNode; } else { rear.next = newNode; rear = newNode; } } // 出队操作 public int dequeue() { if (isEmpty()) { throw new IllegalStateException("队列为空,无法出队"); } int data = front.data; front = front.next; if (front == null) { rear = null; } return data; } // 判断队列是否为空 public boolean isEmpty() { return (front == null); } }
本文共计836个文字,预计阅读时间需要4分钟。
如何在Java中实现队列的插入和删除操作?队列是一种常用的数据结构,遵循先进先出(FIFO)的原则。在Java中,可以使用数组或链表来实现队列。
下面将分别介绍两种实现方式,并给出相应的代码示例:
使用数组实现队列
javaclass QueueUsingArray { private int[] data; private int front; private int rear; private int size; private int capacity;
public QueueUsingArray(int capacity) { this.capacity=capacity; this.data=new int[capacity]; this.front=this.size=0; this.rear=capacity - 1; }
public boolean isEmpty() { return (size==0); }
public boolean isFull() { return (size==capacity); }
public void enqueue(int item) { if (isFull()) { System.out.println(Queue is full); return; } rear=(rear + 1) % capacity; data[rear]=item; size++; }
public int dequeue() { if (isEmpty()) { System.out.println(Queue is empty); return -1; } int item=data[front]; front=(front + 1) % capacity; size--; return item; }}
使用链表实现队列
javaclass Node { int data; Node next;}
class QueueUsingLinkedList { private Node front, rear;
public QueueUsingLinkedList() { front=rear=null; }
public boolean isEmpty() { return (front==null); }
public void enqueue(int item) { Node newNode=new Node(); newNode.data=item; newNode.next=null;
if (rear==null) { front=rear=newNode; } else { rear.next=newNode; rear=newNode; } }
public int dequeue() { if (isEmpty()) { System.out.println(Queue is empty); return -1; } int item=front.data; front=front.next; if (front==null) { rear=null; } return item; }}
如何在Java中实现队列的插入和删除操作
队列是一种常用的数据结构,它遵循先进先出(FIFO)的原则。在Java中,可以使用数组或链表实现队列。下面将分别介绍两种实现方式,并给出代码示例。
- 使用数组实现队列:
数组实现队列的思路是,使用一个数组作为队列的底层数据结构,通过维护头尾指针来实现插入和删除操作。
代码示例:
public class ArrayQueue { private int[] queueArray; // 队列数组 private int front; // 队头指针 private int rear; // 队尾指针 private int maxSize; // 队列的最大容量 public ArrayQueue(int size) { queueArray = new int[size]; maxSize = size; front = 0; rear = -1; } // 入队操作 public void enqueue(int data) { if (isFull()) { throw new IllegalStateException("队列已满,无法入队"); } rear++; queueArray[rear] = data; } // 出队操作 public int dequeue() { if (isEmpty()) { throw new IllegalStateException("队列为空,无法出队"); } int data = queueArray[front]; front++; return data; } // 判断队列是否为空 public boolean isEmpty() { return (rear + 1 == front); } // 判断队列是否已满 public boolean isFull() { return (rear == maxSize - 1); } }
- 使用链表实现队列:
链表实现队列的思路是,通过维护一个指向队头的指针和一个指向队尾的指针来实现插入和删除操作。每次插入新元素都将其添加到队尾,并将队尾指针指向新元素;每次删除元素都将队头的指针指向下一个元素。
代码示例:
public class LinkedQueue { private Node front; // 队头指针 private Node rear; // 队尾指针 public LinkedQueue() { front = null; rear = null; } // 节点类 private class Node { private int data; // 数据 private Node next; // 指向下一个节点的指针 public Node(int data) { this.data = data; this.next = null; } } // 入队操作 public void enqueue(int data) { Node newNode = new Node(data); if (isEmpty()) { front = newNode; rear = newNode; } else { rear.next = newNode; rear = newNode; } } // 出队操作 public int dequeue() { if (isEmpty()) { throw new IllegalStateException("队列为空,无法出队"); } int data = front.data; front = front.next; if (front == null) { rear = null; } return data; } // 判断队列是否为空 public boolean isEmpty() { return (front == null); } }

