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

java隊(duì)列和棧實(shí)現(xiàn)原理

Java隊(duì)列和棧是計(jì)算機(jī)程序中常用的數(shù)據(jù)結(jié)構(gòu),它們可以用來存儲(chǔ)和操作數(shù)據(jù)。隊(duì)列和棧又有各自的實(shí)現(xiàn)原理。

隊(duì)列是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)。它的實(shí)現(xiàn)原理是在底層使用一個(gè)數(shù)組或鏈表來存儲(chǔ)數(shù)據(jù)。隊(duì)列有兩個(gè)指針:head指針和tail指針。head指向隊(duì)列的第一個(gè)元素,tail指向隊(duì)列的最后一個(gè)元素。當(dāng)元素入隊(duì)時(shí),tail指針會(huì)向后移動(dòng)一位,同時(shí)將元素存儲(chǔ)在tail指向的位置。當(dāng)元素出隊(duì)時(shí),head指針會(huì)向后移動(dòng)一位,同時(shí)返回head指向的元素。需要注意的是,隊(duì)列操作的時(shí)間復(fù)雜度是O(1)。

public class Queue{
private int[] arr;
private int head;
private int tail;
public Queue(int size){
arr = new int[size];
head = 0;
tail = 0;
}
public void enqueue(int val){
arr[tail] = val;
tail++;
}
public int dequeue(){
int val = arr[head];
head++;
return val;
}
}

棧是一種后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu)。它的實(shí)現(xiàn)原理是在底層使用一個(gè)數(shù)組或鏈表來存儲(chǔ)數(shù)據(jù)。棧有一個(gè)指針,指向棧頂元素。當(dāng)元素入棧時(shí),棧頂指針會(huì)向后移動(dòng)一位,同時(shí)將元素存儲(chǔ)在棧頂指向的位置。當(dāng)元素出棧時(shí),棧頂指針會(huì)向前移動(dòng)一位,同時(shí)返回棧頂指向的元素。需要注意的是,棧操作的時(shí)間復(fù)雜度是O(1)。

public class Stack{
private int[] arr;
private int top;
public Stack(int size){
arr = new int[size];
top = -1;
}
public void push(int val){
top++;
arr[top] = val;
}
public int pop(){
int val = arr[top];
top--;
return val;
}
}

Java隊(duì)列和棧都是比較基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),掌握它們的實(shí)現(xiàn)原理對(duì)于編程工作來說是非常有幫助的。