Stogovi su temeljna struktura podataka u raฤunalnoj znanosti, koja omoguฤuje uฤinkovit rad i pohranu. U Javi hrpa znakova moลพe biti posebno korisna u rjeลกavanju specifiฤnih programskih problema kao ลกto su manipulacija nizovima, raลกฤlanjivanje i analiza sintakse. U ovom ฤemo ฤlanku vidjeti kako stvoriti i raditi s hrpom znakova u Javi, dok ฤemo takoฤer istraลพivati โโpovezane biblioteke i funkcije koje olakลกavaju rjeลกavanje problema sa hrpom znakova.
Stog je podatkovna struktura Last In, First Out (LIFO), ลกto znaฤi da ฤe zadnja stavka dodana u stog biti prva uklonjena. Ovo ponaลกanje je korisno u mnogim programskim kontekstima, kao ลกto je podudaranje zagrada, procjena izraza ili ฤak praฤenje poziva programa. Zaronimo u implementaciju i koriลกtenje hrpe znakova u Javi.
Stvaranje niza znakova
U Javi, Stog klasa koju pruลพa java.util paket se moลพe koristiti za stvaranje niza znakova. Evo jednostavnog primjera kako deklarirati hrpu znakova i izvesti osnovne operacije poput guranja, iskakanja i provirivanja:
import java.util.Stack; public class CharStack { public static void main(String[] args) { Stack<Character> stack = new Stack<>(); // Push characters onto the stack stack.push('A'); stack.push('B'); stack.push('C'); // Pop and peek characters from the stack System.out.println(stack.pop()); System.out.println(stack.peek()); } }
Koriลกtenje niza znakova za rjeลกavanje problema
Stogovi znakova posebno su korisni za rjeลกavanje problema koji ukljuฤuju manipulaciju nizovima ili zahtijevaju praฤenje ugnijeลพฤenih elemenata. Kao primjer, razmotrite problem provjere je li zadani niz zagrada uravnoteลพen.
Niz se smatra uravnoteลพenim ako:
- Svaka poฤetna zagrada ima odgovarajuฤu zatvorenu zagradu
- Parovi zagrada pravilno su ugnijeลพฤeni
Moลพemo koristiti snop znakova za uฤinkovito rjeลกavanje ovog problema uz sljedeฤe korake:
1. Inicijalizirajte prazan niz znakova
2. Proฤite kroz svaki znak u ulaznom nizu
3. Ako je znak otvarajuฤa zagrada, gurnite ga na hrpu
4. Ako je znak zatvarajuฤa zagrada, provjerite je li hrpa prazna i iskoฤite gornji element ako je to odgovarajuฤa otvarajuฤa zagrada
5. Ako stog nije prazan nakon obrade svih znakova, niz je neuravnoteลพen
Evo Java koda za gornji postupak:
public static boolean isBalanced(String input) { Stack<Character> stack = new Stack<>(); for (char c : input.toCharArray()) { if (c == '(' || c == '{' || c == '[') { stack.push(c); } else if (c == ')' || c == '}' || c == ']') { if (stack.isEmpty()) { return false; } char top = stack.pop(); if ((c == ')' && top != '(') || (c == '}' && top != '{') || (c == ']' && top != '[')) { return false; } } } return stack.isEmpty(); }
Razumijevanjem i koriลกtenjem strukture podataka stog, moลพemo uฤinkovito rijeลกiti sloลพene programerske probleme kao ลกto su oni koji ukljuฤuju manipulaciju nizovima, raลกฤlanjivanje i analizu sintakse. ล toviลกe, s klasom Stack dostupnom u java.util paket, implementacija i koriลกtenje nizova znakova u Javi postaje zgodan pothvat.