Advertisement
niske

vezbe ulica

Apr 29th, 2024 (edited)
2,725
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.11 KB | None | 0 0
  1. /**
  2.  *  Klasa ulica pamti listu kuca u ulici. Za nju pamtimo redni broj
  3.  *  i vezuje se lista osoba koja u njoj zivi, lista kuca sortirana je
  4.  *  po rednim brojevima i oni su naravno jedinstveni. Za osobu pamtimo
  5.  *  licno ime kao jedan String, a osobe sa istim imenom mogu ziveti u
  6.  *  istoj kuci . Napravi metode:
  7.  *
  8.  *  1) dodaje novu kucu sa datim brojem
  9.  *  2) dodaje osobu u kucu sa datim brojem. Osoba se ne moze dodati
  10.  *      u kucu koja ne postoji tj. treba odustati od dodavanja ako
  11.  *      kuca ne postoji.
  12.  *  
  13.  *  3) vraca broj kuce u kojoj ima najvise stanovnika sa imenom
  14.  *      duzim od datog N
  15.  *
  16.  *  4) prebacuje poslednju osobu iz date kuce A u kucu sa brojem B.
  17.  *      Kuca moze biti prazna, tj ne treba je ukloniti ako nema vise
  18.  *      osoba u njoj. Ako kuca sa brojem b ne postoji izbaci osobu
  19.  *      iz liste na cisto.
  20.  *
  21.  * **/
  22.  
  23.  
  24. public class PVZad2 {
  25.    
  26.     public static void main (String[] args) {
  27.             Ulica ulica = new Ulica();
  28.            
  29.            
  30.            
  31.             ulica.dodajKucu(5);
  32.                     ulica.dodajOsobu("Petar", 5);
  33.                     ulica.dodajOsobu("Irina", 5);
  34.                    
  35.             ulica.dodajKucu(6);
  36.                     ulica.dodajOsobu("Gaja", 6);
  37.                     ulica.dodajOsobu("Zlaja", 6);
  38.                    
  39.             ulica.dodajKucu(5);
  40.             ulica.dodajKucu(9);
  41.                     ulica.dodajOsobu("Vladimir", 9);
  42.                     ulica.dodajOsobu("Slavica", 9);
  43.                
  44.             System.out.println(ulica);
  45.            
  46.             ulica.prebrojOsobe(5);
  47.            
  48.             ulica.preseliPoslednjuOsobu(5, 9);
  49.             System.out.println(ulica);
  50.            
  51.             ulica.preseliPoslednjuOsobu(5, 9);
  52.             System.out.println(ulica);
  53.                    
  54.     }
  55. }
  56.  
  57.  
  58. class Ulica {
  59.        
  60.         class Osoba {
  61.                 String m;
  62.                 Osoba veza;
  63.                
  64.                 public Osoba(String m){
  65.                         this.m = m;
  66.                         this.veza = null;
  67.                 }
  68.                
  69.                 public String toString() {
  70.                         return m;
  71.                 }
  72.         }
  73.        
  74.         class Kuca {
  75.                 int b;
  76.                 Osoba prvaOsoba;
  77.                 Kuca veza;
  78.                
  79.                 public Kuca(int b){
  80.                         this.b = b;
  81.                         this.prvaOsoba = null;
  82.                         this.veza = null;
  83.                 }
  84.                
  85.                 public String toString() {
  86.                         String output = "[ Kuca broj: " + b + ": ";
  87.                        
  88.                         Osoba tek = prvaOsoba;
  89.                        
  90.                         while (tek != null)
  91.                         {
  92.                                 output += tek + " ";
  93.                                 tek = tek.veza;
  94.                         }
  95.                        
  96.                         return output + " ]";
  97.                 }
  98.         }
  99.        
  100.         public boolean dodajOsobu(String m, int b) {
  101.                 Kuca cilj = nadjiKucu(b);
  102.                
  103.                 if (cilj == null)
  104.                 {
  105.                         return false;
  106.                 }
  107.                
  108.                 Osoba nova = new Osoba(m);
  109.                
  110.                 nova.veza = cilj.prvaOsoba;
  111.                 cilj.prvaOsoba = nova;
  112.                
  113.                 return true;
  114.         }
  115.        
  116.         private Osoba izbaciPoslednju(int b) {
  117.                
  118.                 Kuca cilj = nadjiKucu(b);
  119.                
  120.                 if (cilj == null || cilj.prvaOsoba == null)
  121.                 {
  122.                         return null;
  123.                 }
  124.                
  125.                 Osoba pom;
  126.                
  127.                 if (cilj.prvaOsoba.veza == null)
  128.                 {
  129.                         pom = cilj.prvaOsoba;
  130.                        
  131.                         cilj.prvaOsoba = cilj.prvaOsoba.veza;
  132.                         pom.veza = null;
  133.                        
  134.                         return pom;
  135.                 }
  136.                
  137.                 Osoba pret = cilj.prvaOsoba;
  138.                
  139.                 while (pret.veza.veza != null)
  140.                 {
  141.                         pret = pret.veza;
  142.                 }
  143.                
  144.                 pom = pret.veza;
  145.                 pret.veza = pret.veza.veza;
  146.                
  147.                 return pom;
  148.         }
  149.        
  150.        
  151.         Kuca prvaKuca;
  152.        
  153.         public boolean dodajKucu(int b) {
  154.                 if (nadjiKucu(b) != null)
  155.                 {
  156.                         return false;
  157.                 }
  158.                
  159.                 Kuca nova = new Kuca(b);
  160.                
  161.                 if (prvaKuca == null || b < prvaKuca.b)
  162.                 {
  163.                         nova.veza = prvaKuca;
  164.                         prvaKuca = nova;
  165.                        
  166.                         return true;
  167.                 }
  168.                
  169.                 Kuca pret = prvaKuca;
  170.                
  171.                 while (pret.veza != null && b > pret.veza.b)
  172.                 {
  173.                         pret = pret.veza;
  174.                 }
  175.                
  176.                 nova.veza = pret.veza;
  177.                 pret.veza = nova;
  178.                
  179.                 return true;
  180.         }
  181.        
  182.         private Kuca nadjiKucu(int b) {
  183.                 if (prvaKuca == null)
  184.                 {
  185.                         return null;
  186.                 }
  187.                
  188.                 Kuca tek = prvaKuca;
  189.                
  190.                 while (tek != null)
  191.                 {
  192.                         if (tek.b == b)
  193.                         {
  194.                                 return tek;
  195.                         }
  196.                        
  197.                         tek = tek.veza;
  198.                 }
  199.                
  200.                 return null;
  201.         }
  202.        
  203.         public int prebrojOsobe(int n) {
  204.                
  205.                 if (prvaKuca == null)
  206.                 {
  207.                      return -1;
  208.                 }
  209.                
  210.                 Kuca tek = prvaKuca;
  211.                
  212.                 int count;
  213.                 int max = 0;
  214.                 int broj = 0;
  215.                
  216.                 while (tek != null)
  217.                 {
  218.                         count = 0;
  219.                         Osoba osb = tek.prvaOsoba;
  220.                        
  221.                         while (osb != null)
  222.                         {
  223.                                 if (osb.m.length() > n)
  224.                                 {
  225.                                         count++;
  226.                                 }
  227.                                
  228.                                 osb = osb.veza;
  229.                         }
  230.                        
  231.                         if (count > max)
  232.                         {
  233.                                 max = count;
  234.                                 broj = tek.b;
  235.                         }
  236.                        
  237.                         tek = tek.veza;
  238.                 }
  239.                
  240.                 System.out.println("Kuca sa najvise imena duzih od " + n + ": " + broj);
  241.                 return broj;
  242.         }
  243.        
  244.         public void preseliPoslednjuOsobu(int b1, int b2){
  245.                 Kuca start = nadjiKucu(b1);
  246.                
  247.                 if (start == null)
  248.                 {
  249.                         return;
  250.                 }
  251.                
  252.                 Osoba osb = izbaciPoslednju(b1);
  253.                 Kuca cilj = nadjiKucu(b2);
  254.                
  255.                 if (osb == null || cilj == null)
  256.                 {
  257.                         return;
  258.                 }
  259.                
  260.                 osb.veza = cilj.prvaOsoba;
  261.                 cilj.prvaOsoba = osb;
  262.         }
  263.        
  264.         public String toString() {
  265.                 String output = "ULICA ";
  266.                
  267.                 Kuca tek = prvaKuca;
  268.                
  269.                 while (tek != null)
  270.                 {
  271.                         output += tek + " ";
  272.                         tek = tek.veza;
  273.                 }
  274.                
  275.                 return output;
  276.         }
  277.        
  278. }
  279.  
  280.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement