glavinova

Sobiranje

Feb 11th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.02 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  class DLL<E> {
  5.     private DLLNode<E> first, last;
  6.  
  7.     public DLL() {
  8.         // Construct an empty SLL
  9.         this.first = null;
  10.         this.last = null;
  11.     }
  12.  
  13.     public void deleteList() {
  14.         first = null;
  15.         last = null;
  16.     }
  17.  
  18.     public int length() {
  19.         int ret;
  20.         if (first != null) {
  21.             DLLNode<E> tmp = first;
  22.             ret = 1;
  23.             while (tmp.succ != null) {
  24.                 tmp = tmp.succ;
  25.                 ret++;
  26.             }
  27.             return ret;
  28.         } else
  29.             return 0;
  30.  
  31.     }
  32.  
  33.     public DLLNode<E> find(E o) {
  34.         if (first != null) {
  35.             DLLNode<E> tmp = first;
  36.             while (tmp.element != o && tmp.succ != null)
  37.                 tmp = tmp.succ;
  38.             if (tmp.element == o) {
  39.                 return tmp;
  40.             } else {
  41.                 System.out.println("Elementot ne postoi vo listata");
  42.             }
  43.         } else {
  44.             System.out.println("Listata e prazna");
  45.         }
  46.         return first;
  47.     }
  48.  
  49.     public void insertFirst(E o) {
  50.         DLLNode<E> ins = new DLLNode<E>(o, null, first);
  51.         if (first == null)
  52.             last = ins;
  53.         else
  54.             first.pred = ins;
  55.         first = ins;
  56.     }
  57.  
  58.     public void insertLast(E o) {
  59.         if (first == null)
  60.             insertFirst(o);
  61.         else {
  62.             DLLNode<E> ins = new DLLNode<E>(o, last, null);
  63.             last.succ = ins;
  64.             last = ins;
  65.         }
  66.     }
  67.  
  68.     public void insertAfter(E o, DLLNode<E> after) {
  69.         if(after==last){
  70.             insertLast(o);
  71.             return;
  72.         }
  73.         DLLNode<E> ins = new DLLNode<E>(o, after, after.succ);
  74.         after.succ.pred = ins;
  75.         after.succ = ins;
  76.     }
  77.  
  78.     public void insertBefore(E o, DLLNode<E> before) {
  79.         if(before == first){
  80.             insertFirst(o);
  81.             return;
  82.         }
  83.         DLLNode<E> ins = new DLLNode<E>(o, before.pred, before);
  84.         before.pred.succ = ins;
  85.         before.pred = ins;
  86.     }
  87.  
  88.     public E deleteFirst() {
  89.         if (first != null) {
  90.             DLLNode<E> tmp = first;
  91.             first = first.succ;
  92.             if (first != null) first.pred = null;
  93.             if (first == null)
  94.                 last = null;
  95.             return tmp.element;
  96.         } else
  97.             return null;
  98.     }
  99.  
  100.     public E deleteLast() {
  101.         if (first != null) {
  102.             if (first.succ == null)
  103.                 return deleteFirst();
  104.             else {
  105.                 DLLNode<E> tmp = last;
  106.                 last = last.pred;
  107.                 last.succ = null;
  108.                 return tmp.element;
  109.             }
  110.         }
  111.         // else throw Exception
  112.         return null;
  113.     }
  114.  
  115.     public E delete(DLLNode<E> node) {
  116.         if(node==first){
  117.             deleteFirst();
  118.             return node.element;
  119.         }
  120.         if(node==last){
  121.             deleteLast();
  122.             return node.element;
  123.         }
  124.         node.pred.succ = node.succ;
  125.         node.succ.pred = node.pred;
  126.         return node.element;
  127.  
  128.     }
  129.  
  130.     @Override
  131.     public String toString() {
  132.         String ret = new String();
  133.         if (first != null) {
  134.             DLLNode<E> tmp = first;
  135.             ret += tmp + "";
  136.             while (tmp.succ != null) {
  137.                 tmp = tmp.succ;
  138.                 ret += tmp + "";
  139.             }
  140.         } else
  141.             ret = "Prazna lista!!!";
  142.         return ret;
  143.     }
  144.  
  145.     public String toStringR() {
  146.         String ret = new String();
  147.         if (last != null) {
  148.             DLLNode<E> tmp = last;
  149.             ret += tmp + "";
  150.             while (tmp.pred != null) {
  151.                 tmp = tmp.pred;
  152.                 ret += tmp + "";
  153.             }
  154.         } else
  155.             ret = "Prazna lista!!!";
  156.         return ret;
  157.     }
  158.  
  159.     public DLLNode<E> getFirst() {
  160.         return first;
  161.     }
  162.  
  163.     public DLLNode<E> getLast() {
  164.  
  165.         return last;
  166.     }
  167.  
  168.     public void izvadiDupliIPrebroj(){
  169.  
  170.     }
  171. }
  172.  
  173.  
  174. class DLLNode<E> {
  175.     protected E element;
  176.     protected DLLNode<E> pred, succ;
  177.  
  178.     public DLLNode(E elem, DLLNode<E> pred, DLLNode<E> succ) {
  179.         this.element = elem;
  180.         this.pred = pred;
  181.         this.succ = succ;
  182.     }
  183.  
  184.     @Override
  185.     public String toString() {
  186.         return element.toString();
  187.     }
  188. }
  189.  
  190. public class GolemiBroevi{
  191.  
  192.  
  193.     public static void main(String[] args) throws IOException {
  194.         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  195.  
  196.         String prv=br.readLine();
  197.         String vtor=br.readLine();
  198.  
  199.         char []pom1=prv.toCharArray();
  200.         char []pom2=vtor.toCharArray();
  201.  
  202.         DLL<Integer> lista1=new DLL<>();
  203.         DLL<Integer> lista2=new DLL<>();
  204.  
  205.         for(int i=0;i<prv.length();i++)
  206.         {
  207.             lista1.insertLast(Integer.parseInt(String.valueOf(pom1[i])));
  208.         }
  209.  
  210.         for(int i=0;i<vtor.length();i++)
  211.         {
  212.             lista2.insertLast(Integer.parseInt(String.valueOf(pom2[i])));
  213.         }
  214.  
  215.         soberi(lista1,lista2);
  216.  
  217.  
  218.  
  219.     }
  220.  
  221.     private static void soberi(DLL <Integer> lista1, DLL<Integer> lista2) {
  222.         DLLNode<Integer> p1=lista1.getLast();
  223.         DLLNode<Integer> p2=lista2.getLast();
  224.  
  225.         DLL<Integer> zbir=new DLL<>();
  226.  
  227.         int i=0;
  228.  
  229.         while(p1!=null && p2!=null)
  230.         {
  231.             i=p1.element+p2.element;
  232.             zbir.insertFirst(i);
  233.             p1=p1.pred;
  234.             p2=p2.pred;
  235.  
  236.             if(i>=10)
  237.             {
  238.                 int ost=i-10;
  239.                 zbir.insertFirst(ost);
  240.                 p1.pred.element=p1.pred.element+1;
  241.  
  242.             }
  243.         }
  244.         while(p1!=null)
  245.         {
  246.             zbir.insertFirst(p1.element);
  247.             p1=p1.pred;
  248.  
  249.         }
  250.         while(p2!=null)
  251.         {
  252.             zbir.insertFirst(p2.element);
  253.             p2=p2.pred;
  254.         }
  255.         System.out.println(zbir);
  256.  
  257.  
  258.     }
  259. }
Add Comment
Please, Sign In to add comment