Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Klasa ulica pamti listu kuca u ulici. Za nju pamtimo redni broj
- * i vezuje se lista osoba koja u njoj zivi, lista kuca sortirana je
- * po rednim brojevima i oni su naravno jedinstveni. Za osobu pamtimo
- * licno ime kao jedan String, a osobe sa istim imenom mogu ziveti u
- * istoj kuci . Napravi metode:
- *
- * 1) dodaje novu kucu sa datim brojem
- * 2) dodaje osobu u kucu sa datim brojem. Osoba se ne moze dodati
- * u kucu koja ne postoji tj. treba odustati od dodavanja ako
- * kuca ne postoji.
- *
- * 3) vraca broj kuce u kojoj ima najvise stanovnika sa imenom
- * duzim od datog N
- *
- * 4) prebacuje poslednju osobu iz date kuce A u kucu sa brojem B.
- * Kuca moze biti prazna, tj ne treba je ukloniti ako nema vise
- * osoba u njoj. Ako kuca sa brojem b ne postoji izbaci osobu
- * iz liste na cisto.
- *
- * **/
- public class PVZad2 {
- public static void main (String[] args) {
- Ulica ulica = new Ulica();
- ulica.dodajKucu(5);
- ulica.dodajOsobu("Petar", 5);
- ulica.dodajOsobu("Irina", 5);
- ulica.dodajKucu(6);
- ulica.dodajOsobu("Gaja", 6);
- ulica.dodajOsobu("Zlaja", 6);
- ulica.dodajKucu(5);
- ulica.dodajKucu(9);
- ulica.dodajOsobu("Vladimir", 9);
- ulica.dodajOsobu("Slavica", 9);
- System.out.println(ulica);
- ulica.prebrojOsobe(5);
- ulica.preseliPoslednjuOsobu(5, 9);
- System.out.println(ulica);
- ulica.preseliPoslednjuOsobu(5, 9);
- System.out.println(ulica);
- }
- }
- class Ulica {
- class Osoba {
- String m;
- Osoba veza;
- public Osoba(String m){
- this.m = m;
- this.veza = null;
- }
- public String toString() {
- return m;
- }
- }
- class Kuca {
- int b;
- Osoba prvaOsoba;
- Kuca veza;
- public Kuca(int b){
- this.b = b;
- this.prvaOsoba = null;
- this.veza = null;
- }
- public String toString() {
- String output = "[ Kuca broj: " + b + ": ";
- Osoba tek = prvaOsoba;
- while (tek != null)
- {
- output += tek + " ";
- tek = tek.veza;
- }
- return output + " ]";
- }
- }
- public boolean dodajOsobu(String m, int b) {
- Kuca cilj = nadjiKucu(b);
- if (cilj == null)
- {
- return false;
- }
- Osoba nova = new Osoba(m);
- nova.veza = cilj.prvaOsoba;
- cilj.prvaOsoba = nova;
- return true;
- }
- private Osoba izbaciPoslednju(int b) {
- Kuca cilj = nadjiKucu(b);
- if (cilj == null || cilj.prvaOsoba == null)
- {
- return null;
- }
- Osoba pom;
- if (cilj.prvaOsoba.veza == null)
- {
- pom = cilj.prvaOsoba;
- cilj.prvaOsoba = cilj.prvaOsoba.veza;
- pom.veza = null;
- return pom;
- }
- Osoba pret = cilj.prvaOsoba;
- while (pret.veza.veza != null)
- {
- pret = pret.veza;
- }
- pom = pret.veza;
- pret.veza = pret.veza.veza;
- return pom;
- }
- Kuca prvaKuca;
- public boolean dodajKucu(int b) {
- if (nadjiKucu(b) != null)
- {
- return false;
- }
- Kuca nova = new Kuca(b);
- if (prvaKuca == null || b < prvaKuca.b)
- {
- nova.veza = prvaKuca;
- prvaKuca = nova;
- return true;
- }
- Kuca pret = prvaKuca;
- while (pret.veza != null && b > pret.veza.b)
- {
- pret = pret.veza;
- }
- nova.veza = pret.veza;
- pret.veza = nova;
- return true;
- }
- private Kuca nadjiKucu(int b) {
- if (prvaKuca == null)
- {
- return null;
- }
- Kuca tek = prvaKuca;
- while (tek != null)
- {
- if (tek.b == b)
- {
- return tek;
- }
- tek = tek.veza;
- }
- return null;
- }
- public int prebrojOsobe(int n) {
- if (prvaKuca == null)
- {
- return -1;
- }
- Kuca tek = prvaKuca;
- int count;
- int max = 0;
- int broj = 0;
- while (tek != null)
- {
- count = 0;
- Osoba osb = tek.prvaOsoba;
- while (osb != null)
- {
- if (osb.m.length() > n)
- {
- count++;
- }
- osb = osb.veza;
- }
- if (count > max)
- {
- max = count;
- broj = tek.b;
- }
- tek = tek.veza;
- }
- System.out.println("Kuca sa najvise imena duzih od " + n + ": " + broj);
- return broj;
- }
- public void preseliPoslednjuOsobu(int b1, int b2){
- Kuca start = nadjiKucu(b1);
- if (start == null)
- {
- return;
- }
- Osoba osb = izbaciPoslednju(b1);
- Kuca cilj = nadjiKucu(b2);
- if (osb == null || cilj == null)
- {
- return;
- }
- osb.veza = cilj.prvaOsoba;
- cilj.prvaOsoba = osb;
- }
- public String toString() {
- String output = "ULICA ";
- Kuca tek = prvaKuca;
- while (tek != null)
- {
- output += tek + " ";
- tek = tek.veza;
- }
- return output;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement