色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java鏈表和隊列

盧春練1年前6瀏覽0評論

Java語言是一種面向對象的編程語言,它在很多方面都得到了廣泛的應用。Java語言中的鏈表和隊列是非常常用的數據結構,它們分別有著不同的特點和用途,下面我們分別來了解一下。

鏈表

鏈表是一種非常常用的數據結構,它可以實現動態的數據操作,比如在動態增加和刪除節點時,不需要像數組一樣需要重新分配空間。Java語言中,我們可以通過定義節點的方式來實現鏈表,具體的實現代碼如下:

class ListNode {
int value;
ListNode next;
ListNode(int value) {
this.value = value;
}
}
class LinkedList {
ListNode head;
LinkedList() {
this.head = null;
}
public void add(int value) {
ListNode newNode = new ListNode(value);
newNode.next = head;
head = newNode;
}
public void delete(int value) {
ListNode current = head, prev = null;
while (current != null && current.value != value) {
prev = current;
current = current.next;
}
if (current != null) {
if (prev == null) {
head = current.next;
} else {
prev.next = current.next;
}
}
}
}

在上面這段代碼中,我們定義了鏈表節點的類ListNode,然后又定義了一個LinkedList類來實現鏈表的增刪操作。在LinkedList類中,我們使用了頭插法來插入節點,使用while循環來找到要刪除的節點,刪除節點時需要注意處理頭節點和非頭節點的情況。

隊列

隊列是一種非常有用的數據結構,在異步編程和任務調度時有著廣泛的應用。Java語言中,我們可以通過定義一個隊列的類來實現隊列的操作,具體的實現代碼如下:

class MyQueue {
private ListNode head;
private ListNode tail;
private int size;
MyQueue() {
this.head = null;
this.tail = null;
this.size = 0;
}
public void enqueue(int value) {
ListNode newNode = new ListNode(value);
if (tail == null) {
head = newNode;
tail = newNode;
} else {
tail.next = newNode;
tail = newNode;
}
size++;
}
public int dequeue() {
if (head == null) {
throw new RuntimeException("Queue is empty!");
}
int value = head.value;
head = head.next;
if (head == null) {
tail = null;
}
size--;
return value;
}
public boolean isEmpty() {
return size == 0;
}
public int size() {
return size;
}
}

在上面這段代碼中,我們定義了一個MyQueue類來實現隊列的操作,隊列中的元素都是通過鏈表實現的。在MyQueue類中,我們使用了兩個指針head和tail來分別指向隊列的頭和尾,在插入元素時需要判斷隊列是否為空,刪除元素時需要注意空隊列的情況。