Java队列插入删除方法如何改写为长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计865个文字,预计阅读时间需要4分钟。
如何在Java中实现队列的插入和删除操作 + 队列是一种常用的数据结构,它遵循先进先出(FIFO)的原则。在Java中,可以使用数组或链表实现队列。
下面分别介绍两种实现方式:
使用数组实现队列
javaclass QueueArray { private int[] data; private int head; private int tail; private int size;
public QueueArray(int capacity) { data=new int[capacity]; head=0; tail=0; size=0; }
public boolean isEmpty() { return size==0; }
public boolean isFull() { return size==data.length; }
public void enqueue(int item) { if (isFull()) { throw new IllegalStateException(Queue is full); } data[tail]=item; tail=(tail + 1) % data.length; size++; }
public int dequeue() { if (isEmpty()) { throw new IllegalStateException(Queue is empty); } int item=data[head]; head=(head + 1) % data.length; size--; return item; }
public int peek() { if (isEmpty()) { throw new IllegalStateException(Queue is empty); } return data[head]; }}
使用链表实现队列
javaclass QueueLinkedList { private Node head; private Node tail;
private class Node { int item; Node next;
public Node(int item) { this.item=item; } }
public boolean isEmpty() { return head==null; }
public void enqueue(int item) { Node newNode=new Node(item); if (tail==null) { head=newNode; tail=newNode; } else { tail.next=newNode; tail=newNode; } }
public int dequeue() { if (isEmpty()) { throw new IllegalStateException(Queue is empty); } int item=head.item; head=head.next; if (head==null) { tail=null; } return item; }
public int peek() { if (isEmpty()) { throw new IllegalStateException(Queue is empty); } return head.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); } }
本文共计865个文字,预计阅读时间需要4分钟。
如何在Java中实现队列的插入和删除操作 + 队列是一种常用的数据结构,它遵循先进先出(FIFO)的原则。在Java中,可以使用数组或链表实现队列。
下面分别介绍两种实现方式:
使用数组实现队列
javaclass QueueArray { private int[] data; private int head; private int tail; private int size;
public QueueArray(int capacity) { data=new int[capacity]; head=0; tail=0; size=0; }
public boolean isEmpty() { return size==0; }
public boolean isFull() { return size==data.length; }
public void enqueue(int item) { if (isFull()) { throw new IllegalStateException(Queue is full); } data[tail]=item; tail=(tail + 1) % data.length; size++; }
public int dequeue() { if (isEmpty()) { throw new IllegalStateException(Queue is empty); } int item=data[head]; head=(head + 1) % data.length; size--; return item; }
public int peek() { if (isEmpty()) { throw new IllegalStateException(Queue is empty); } return data[head]; }}
使用链表实现队列
javaclass QueueLinkedList { private Node head; private Node tail;
private class Node { int item; Node next;
public Node(int item) { this.item=item; } }
public boolean isEmpty() { return head==null; }
public void enqueue(int item) { Node newNode=new Node(item); if (tail==null) { head=newNode; tail=newNode; } else { tail.next=newNode; tail=newNode; } }
public int dequeue() { if (isEmpty()) { throw new IllegalStateException(Queue is empty); } int item=head.item; head=head.next; if (head==null) { tail=null; } return item; }
public int peek() { if (isEmpty()) { throw new IllegalStateException(Queue is empty); } return head.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); } }

