Apa Stack Data Structure
Kaping pisanan, ayo goleki kanthi cepet babagan struktur data tumpukan. Iku struktur data linier sing adhedhasar prinsip Last-in-First-out (LIFO). Iku jenis anti antrian. Mbayangno dek saka kertu utawa tumpukan buku ing kothak. Buku sing sampeyan lebokake ing tumpukan luwih dhisik ana ing sisih ngisor, lan sing pertama sing bakal dijupuk saka kothak yaiku buku sing ana ing ndhuwur - yaiku, sing pungkasan mlebu ing kothak. Punika gambar gif kanggo nduduhake prinsip iki.
Apa struktur data Stack kanggo?
Salah sawijining panggunaan tumpukan sing paling penting yaiku ngatur panggilan subrutin. Titik telpon ing tumpukan nyimpen alamat bali saka subrutin sawise mungkasi (lan bisa uga paramèter liwati). Kanthi saben subrutin nested (kalebu rekursif), alamat bali anyar ditambahake menyang tumpukan. Kanthi saben operasi bali saka subroutine (bali), alamat bali dibusak saka tumpukan lan kontrol ditransfer menyang. Aplikasi iki penting banget kanggo program sing ing paling prosesor tumpukan bali dipun ginakaken ing hardware ing pesawat instruction. Nanging, ing kasus liyane, tumpukan kudu dimodelake ing struktur data sing luwih umum.Kerangka Koleksi Kelas Tumpukan Jawa
Ing Java Stack Class minangka kelas saka kerangka Koleksi sing ngleksanakake antarmuka List lan ngluwihi kelas Vektor. Uga ngetrapake antarmuka Koleksi, Iterable, Cloneable, Serializable. Sing mbokmenawa wis guessed kelas iki makili LIFO tumpukan obyek. Punika telpon kanggo konstruktor kelas Stack , yaiku, nggawe obyek saka kelas iki.
Stack<E> stack = new Stack<E>();
Ngendi E minangka jinis Obyek.
Metode Tumpukan Jawa
Kelas iki mung nduweni siji konstruktor standar lan kabeh metode kelas Vektor . Kajaba iku, Stack duwe 5 cara dhewe:-
boolean kosong () cara mriksa yen tumpukan kosong utawa ora. Ngasilake bener yen tumpukan kosong, salah yen ora.
-
Ndeleng obyek () cara ngasilake unsur sing ana ing ndhuwur tumpukan.
-
Obyek pop () cara ngasilake unsur sing ana ing ndhuwur tumpukan lan mbusak.
-
Obyek push (Obyek unsur) cara nambah unsur kasebut ing ndhuwur tumpukan.
-
int search (elemen obyek) cara nggoleki tumpukan kanggo unsur sing ditemtokake. Yen unsur sing dibutuhake ditemokake, "jarak" saka ndhuwur (nomer seri) bali. Yen unsur ora ketemu, -1 bali.
Tuladha kode tumpukan
Ayo nggawe conto program sing bisa digunakake kayata gambar gif ing ndhuwur. Kita bakal nyelehake telung "bal", oranye, ungu lan ijo, ing tumpukan. Ayo padha mriksa tumpukan kanggo kekosongan. Banjur, kita bakal extract bal saka tumpukan nganti tumpukan kosong.
import java.util.Stack;
public class myStackTest2 {
public static void main(String[] args)
{
Stack myStack= new Stack<>();
System.out.println("Is my stack empty? " + myStack.empty());
// pushing elements into stack
myStack.push("Orange Ball");
myStack.push("Violet Ball");
myStack.push("Green Ball");
//prints elements of the stack
System.out.println("Elements in Stack: " + myStack);
System.out.println("Is my stack empty? " + myStack.empty());
while (!myStack.isEmpty()) {
myStack.pop();
System.out.println("Elements in Stack: " + myStack);
System.out.println("Is my stack empty? " + myStack.empty());
}
}
}
Mangkene output saka program iki:
import java.util.Stack;
public class myStackTest2 {
public static void main(String[] args)
{
Stack myStack= new Stack<>();
System.out.println("Is my stack empty? " + myStack.empty());
// pushing elements into stack
myStack.add("Orange Ball");
myStack.add("Violet Ball");
myStack.add("Green Ball");
//prints elements of the stack
System.out.println("Elements in Stack: " + myStack);
System.out.println("Is my stack empty? " + myStack.empty());
while (!myStack.isEmpty()) {
myStack.pop();
System.out.println("Elements in Stack: " + myStack);
System.out.println("Is my stack empty? " + myStack.empty());
}
}
}
Asil saka karya program, mesthi, bakal persis padha.
Apa babagan implementasi Stack sampeyan dhewe?
Sampeyan bisa nggawe struktur data tumpukan dhewe ing Jawa nggunakake array utawa kelas dhaptar sing disambung. Ing kasus sing sepisanan, macem-macem sel terus-terusan diparengake kanggo nyimpen nilai ing memori, sing digunakake yen perlu. Ing kaloro, kanggo saben unsur tumpukan, pemblokiran memori dhawuh, cukup kanggo nyimpen nilai lan referensi kanggo unsur sadurunge lan sabanjuré saka tumpukan. Implementasi basis array luwih prasaja, luwih efisien, lan luwih efisien memori, nanging mbutuhake kawruh sadurunge babagan watesan ukuran tumpukan lan bisa nyebabake kewan omo sing angel ditemokake. Implementasi adhedhasar dhaptar luwih mantep nanging kurang efisien. Ayo nggawe implementasine basis array prasaja saka tumpukan. Iku bakal kalebu fungsi.-
push - cara sing bakal njamin tambahan unsur (ing posisi paling dhuwur)
-
pop - cara sing bakal mbusak unsur (saka posisi ndhuwur)
-
readTop - cara sing bakal ngasilake nilai unsur sing ana ing posisi ndhuwur
-
sEmpty - cara sing bakal mriksa tumpukan kanggo kekosongan
-
isFull - cara sing bakal mriksa yen array sing disimpen ing tumpukan ora kebak
import java.util.Arrays;
public class MyStack {
private int maxSize;
private String[] stackArray;
private int top;
public MyStack(int size) {
this.maxSize = size;
stackArray = new String[maxSize];
top = -1;
}
public String push (String element) {
return stackArray[++top] = element;
}
public String pop (String element) {
if (isEmpty())
{
System.out.println("Underflow\nProgram Terminated");
System.exit(-1);
}
System.out.println("Removing " + readTop());
return stackArray[top--];
}
public String readTop() {
return stackArray[top];
}
public boolean isEmpty() {
return (top == -1);
}
public boolean isFull() {
return (top == maxSize - 1);
}
public void printStack(){
System.out.println(Arrays.toString(stackArray));
}
}
Saiki ayo ngetrapake conto kanthi telung bal adhedhasar tumpukan kita:
public class myStackTest {
public static void main(String[] args) {
MyStack myStack = new MyStack(3);
System.out.println("Is my stack empty? " + myStack.isEmpty());
myStack.push("Orange Ball");
myStack.push("Violet Ball");
myStack.push("Green Ball");
myStack.printStack();
System.out.println("Is my stack empty? " + myStack.isEmpty());
while (!myStack.isEmpty()) {
myStack.pop(myStack.readTop());
System.out.println("Is my stack empty? " + myStack.isEmpty());
}
}
}
Output ing kene:
GO TO FULL VERSION