Cara melaksanakan operasi sisipan dan pemadaman baris gilir dalam Java
Baris gilir ialah struktur data yang biasa digunakan yang mengikut prinsip masuk dahulu keluar dahulu (FIFO). Di Java, baris gilir boleh dilaksanakan menggunakan tatasusunan atau senarai terpaut. Kedua-dua kaedah pelaksanaan akan diperkenalkan di bawah dan contoh kod akan diberikan.
Idea untuk melaksanakan baris gilir dengan tatasusunan ialah menggunakan tatasusunan sebagai struktur data asas baris gilir, dan melaksanakan operasi sisipan dan pemadaman dengan mengekalkan kepala dan ekor petunjuk.
Contoh kod:
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); } }
Idea senarai terpaut yang melaksanakan baris gilir adalah untuk melaksanakan operasi sisipan dan pemadaman dengan mengekalkan penunjuk ke kepala baris gilir dan penunjuk ke ekor barisan. Setiap kali elemen baharu disisipkan, ia ditambahkan pada penghujung baris gilir, dan penuding di penghujung baris gilir menghala ke elemen baharu setiap kali elemen dipadamkan, penunjuk di kepala baris gilir menghala ke; elemen seterusnya.
Contoh kod:
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); } }
Di atas ialah dua cara untuk melaksanakan operasi sisipan dan pemadaman baris gilir dalam Java. Menggunakan pelaksanaan tatasusunan boleh meningkatkan kecekapan capaian rawak pada tahap tertentu, manakala menggunakan pelaksanaan senarai terpaut adalah lebih fleksibel dan boleh melaraskan saiz baris gilir secara dinamik. Pilih sahaja kaedah pelaksanaan yang sesuai mengikut keperluan sebenar.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan operasi sisipan dan pemadaman baris gilir dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!