Advertisement
Kemudraj

SLLKompanija

Nov 9th, 2017
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.36 KB | None | 0 0
  1. package kompanija;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6.  
  7. class SLLNode {
  8.     protected int id;
  9.     protected int plata;
  10.     protected SLLNode succ;
  11.  
  12.     public SLLNode(int id, int plata, SLLNode succ) {
  13.         this.id = id;
  14.         this.plata = plata;
  15.         this.succ = succ;
  16.     }
  17.  
  18. }
  19.  
  20. class SLL {
  21.     private SLLNode first;
  22.  
  23.     public SLL() {
  24.         // Construct an empty SLL
  25.         this.first = null;
  26.     }
  27.  
  28.     public void deleteList() {
  29.         first = null;
  30.     }
  31.  
  32.     public int length() {
  33.         int ret;
  34.         if (first != null) {
  35.             SLLNode tmp = first;
  36.             ret = 1;
  37.             while (tmp.succ != null) {
  38.                 tmp = tmp.succ;
  39.                 ret++;
  40.             }
  41.             return ret;
  42.         } else
  43.             return 0;
  44.  
  45.     }
  46.  
  47.     public void insertFirst(int id, int plata) {
  48.         SLLNode ins = new SLLNode(id, plata, first);
  49.         first = ins;
  50.     }
  51.  
  52.     public void insertLast(int id, int plata) {
  53.         if (first != null) {
  54.             SLLNode tmp = first;
  55.             while (tmp.succ != null)
  56.                 tmp = tmp.succ;
  57.             SLLNode ins = new SLLNode(id, plata, null);
  58.             tmp.succ = ins;
  59.         } else {
  60.             insertFirst(id, plata);
  61.         }
  62.     }
  63.  
  64.     public SLLNode getFirst() {
  65.         return first;
  66.     }
  67.  
  68.     public SLL brisi_pomali_od(int iznos) {
  69.         // Vasiot kod tuka
  70.         SLL lista = new SLL();// imam nova prazna lista
  71.         SLLNode nodeFirst = first;// imam node od tekovnata lista vrz koj go
  72.                                     // povikuvame metodot
  73.         boolean flag;
  74.  
  75.         while (nodeFirst != null) {
  76.             flag = true;
  77.             if (nodeFirst.plata < iznos) {// ako platata e pomala od iznosot
  78.                 nodeFirst = nodeFirst.succ;// smeni go pointerot na sledniot
  79.                                             // element
  80.                 flag = false;
  81.             }
  82.  
  83.             else if (flag) {// ako platata ne e pomala od iznosot ke ostane true
  84.                 lista.insertLast(nodeFirst.id, nodeFirst.plata);// vnesi go
  85.                                                                 // tekovniot
  86.                                                                 // element vo
  87.                                                                 // listata
  88.                 nodeFirst = nodeFirst.succ;// pointer na sledniot element
  89.             }
  90.         }
  91.         return lista;// treba da vrati lista SLL
  92.     }
  93.  
  94.     public SLL sortiraj_opagacki() {// sortiraj opagjacki spored ID
  95.         // Vasiot kod tuka
  96.         SLL listaSortirana = new SLL();
  97.         SLLNode i = first;
  98.         SLLNode j = first;
  99.         SLLNode temp = listaSortirana.getFirst();
  100.         boolean flag = false;
  101.         int maxId;
  102.         int maxPlata;
  103.  
  104.         while (i.succ != null) {// dodeka ne ja pomine prviot listata
  105.             maxPlata = i.plata;// vo sekoja nova iteracija zemaj go kako
  106.                                 // najgolem
  107.             maxId = i.id;// vo sekoja nova iteracija zemaj go kako najgolem
  108.             flag = false;
  109.             j = i.succ;// pri nova iteracija na i, pomesti go j vo desno
  110.             while (j != null) {// dodeka j ne dojde do kraj
  111.                 if (maxId < j.id) {// ako maksimalniot id e pomal od id-to na j
  112.                     maxId = j.id;// stavi go id-to na j kako maksimalno
  113.                     maxPlata = j.plata;
  114.                     temp = j;// zacuvaj go j-tiot jazel koj ima maksimalen id
  115.                     flag = true;
  116.                 }
  117.                 j = j.succ;// odi na sledniot j do kraj
  118.             } // kraj na while za J
  119.  
  120.             if (flag) {// ako sme nasle maksimalen element
  121.                 temp.id = i.id;
  122.                 temp.plata = i.plata;
  123.             }
  124.  
  125.             listaSortirana.insertLast(maxId, maxPlata);
  126.             i = i.succ;// pred nova iteracija, zgolemi go i da pokazuva na
  127.                         // sledniot
  128.         }
  129.         listaSortirana.insertLast(i.id, i.plata);
  130.  
  131.         return listaSortirana;
  132.     }
  133.  
  134.     public void pecati(SLL lista) {
  135.         SLLNode p = lista.first;
  136.         while (p != null) {
  137.             System.out.println(p.id + " " + p.plata);
  138.             p = p.succ;
  139.         }
  140.     }
  141.  
  142. }
  143.  
  144. public class SLLKompanija {
  145.     public static void main(String[] args) throws IOException {
  146.  
  147.         SLL lista1 = new SLL();
  148.         BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
  149.         String s = stdin.readLine();
  150.         int N = Integer.parseInt(s);// broj na vraboteni
  151.  
  152.         for (int i = 0; i < N; i++) {// odi do broj na vraboteni
  153.             s = stdin.readLine();
  154.             String s1 = stdin.readLine();
  155.             lista1.insertLast(Integer.parseInt(s), Integer.parseInt(s1));// smestuvaj
  156.                                                                             // vo
  157.                                                                             // lista
  158.                                                                             // soodvetno
  159.         }
  160.         s = stdin.readLine();// vcitaj iznos
  161.  
  162.         lista1 = lista1.brisi_pomali_od(Integer.parseInt(s));// otstrani
  163.                                                                 // elementi so
  164.                                                                 // pomala plata
  165.                                                                 // od vneseniot
  166.                                                                 // iznos
  167.  
  168.         if (lista1.getFirst() == null) {
  169.             System.out.println("nema");
  170.         }
  171.  
  172.         else if (lista1 != null) {
  173.             lista1 = lista1.sortiraj_opagacki();// povikaj metod za sortiranje
  174.                                                 // po opagjacki redosled
  175.             lista1.pecati(lista1);
  176.         }
  177.  
  178.     }
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement