Guest User

Untitled

a guest
Jul 20th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.20 KB | None | 0 0
  1.  
  2. package pociagi;
  3.  
  4. import java.util.Scanner;
  5.  
  6. class Wagon{
  7.  
  8.     Wagon next,prev;
  9.     String id;
  10.  
  11.     Wagon(String nid)
  12.     {
  13.         id = nid;
  14.         next = prev = null;
  15.     }
  16.  
  17. }
  18.  
  19. class Train{
  20.  
  21.     Train next;
  22.     String id;
  23.     Wagon first,last;
  24.     boolean k;
  25.    
  26.     Train(String nid)
  27.     {
  28.         id = nid;
  29.         next = null;
  30.         first = last = null;
  31.         k = true;
  32.     }
  33.  
  34.     public void Reverse()
  35.     {
  36.         if(k == false)
  37.             k = true;
  38.         else
  39.             k = false;
  40.     }
  41.  
  42.     public void Display()
  43.     {
  44.         if(k == true){
  45.             Wagon A = first;
  46.             do
  47.             {
  48.                 System.out.print(A.id + " ");
  49.                 A = A.next;
  50.  
  51.             }while(A != null);
  52.         }
  53.         else
  54.         {
  55.             Wagon A = last;
  56.             do
  57.             {
  58.                 System.out.print(A.id + " ");
  59.                 A = A.prev;
  60.  
  61.             }while(A != null);
  62.  
  63.  
  64.         }
  65.         System.out.print("\n");
  66.  
  67.     }
  68.  
  69.     public void InsertFirst(String TName,String WName)
  70.     {
  71.         Wagon A = new Wagon(WName);
  72.         A.next = first;
  73.         first.prev = A;
  74.        
  75.         A.prev = null;
  76.         first = A;
  77.     }
  78.  
  79.     public void InsertLast(String TName,String WName)
  80.     {
  81.         Wagon A = new Wagon(WName);
  82.         last.next = A;
  83.         A.prev = last;
  84.         A.next = null;
  85.         last = A;
  86.     }
  87.  
  88. }
  89.  
  90. class Lista{
  91.  
  92.     Train First;
  93.  
  94.     Lista()
  95.     {
  96.         First = null;
  97.     }
  98.  
  99.     public void New(String TName, String WName)
  100.     {
  101.    
  102.         Train New = new Train(TName);
  103.  
  104.         New.first = new Wagon(WName);
  105.         New.last = New.first;
  106.  
  107.         Train tmp = First;
  108.         First = New;
  109.         First.next = tmp;
  110.    
  111.     }
  112.  
  113.  
  114.     public void Display(String TName)
  115.     {
  116.         Train A = Search(TName);
  117.         if(A != null)
  118.         {
  119.             System.out.print(TName + " : ");
  120.             A.Display();
  121.         }
  122.     }
  123.  
  124.     public void DelTrain(String TName)
  125.     {
  126.         Train A = First;
  127.         if(A.id.compareTo(TName) == 0)
  128.             First = First.next;
  129.         else
  130.             do{
  131.  
  132.             if(A.next.id.compareTo(TName) == 0)
  133.             {
  134.                 A.next = A.next.next;
  135.                 break;
  136.             }
  137.  
  138.             A = A.next;
  139.  
  140.         }while(A != null);
  141.  
  142.     }
  143.  
  144.     public void Union(String TName1, String TName2)
  145.     {
  146.         Train A = Search(TName1), B = Search(TName2);
  147.         if(A != null && B != null)
  148.         {
  149.             A.last.next = B.first;
  150.             B.first.prev = A.last;
  151.             A.last = B.first;
  152.             DelTrain(TName2);
  153.         }
  154.     }
  155.  
  156.     public void DelFirst(String TName1, String TName2)
  157.     {
  158.        Train A = Search(TName1);
  159.        if(A != null)
  160.            if(A.k == true)
  161.                DelFirst_(A,TName1,TName2);
  162.            else
  163.                DelLast_(A,TName1,TName2);
  164.     }
  165.  
  166.     public void DelLast(String TName1, String TName2)
  167.     {
  168.        Train A = Search(TName1);
  169.        if(A != null)
  170.            if(A.k == true)
  171.                DelLast_(A,TName1,TName2);
  172.            else
  173.                DelFirst_(A,TName1,TName2);
  174.     }
  175.  
  176.  
  177.     public void DelFirst_(Train A, String TName1, String TName2)
  178.     {
  179.             Wagon W = A.first;
  180.             if(A.first.next == null)
  181.                 DelTrain(A.id);
  182.             else
  183.             {
  184.                 A.first = A.first.next;
  185.                 A.first.prev = null;
  186.             }
  187.  
  188.             New(TName2,W.id);      
  189.     }
  190.  
  191.      public void DelLast_(Train A, String TName1, String TName2)
  192.      {
  193.             Wagon W = A.last;
  194.             if(A.last.prev == null)
  195.                 DelTrain(A.id);
  196.             else
  197.             {
  198.                 A.last = A.last.prev;
  199.                 A.last.next = null;
  200.             }
  201.  
  202.             New(TName2,W.id);
  203.      }
  204.  
  205.     public void Reverse(String TName)
  206.     {
  207.        Train A = Search(TName);
  208.        if(A != null)
  209.            A.Reverse();
  210.  
  211.     }
  212.  
  213.     public void InsertFirst(String TName, String WName)
  214.     {
  215.        Train A = Search(TName);
  216.        if(A != null)
  217.            if(A.k == true)
  218.             A.InsertFirst(TName,WName);
  219.            else
  220.             A.InsertLast(TName,WName);
  221.  
  222.     }
  223.  
  224.     public void InsertLast(String TName, String WName)
  225.     {
  226.        Train A = Search(TName);
  227.        if(A != null)
  228.            if(A.k == false)
  229.             A.InsertLast(TName,WName);
  230.            else
  231.             A.InsertFirst(TName, WName);
  232.     }
  233.  
  234.     public Train Search(String TName)
  235.     {
  236.         Train A = First;
  237.         if(A != null)
  238.         do{
  239.  
  240.             if( A.id.compareTo(TName) == 0 )
  241.                 return A;
  242.             A = A.next;
  243.  
  244.         }while(A != null);
  245.  
  246.         return null;
  247.     }
  248.  
  249.  
  250. }
  251.  
  252. public class Source {
  253.  
  254.     public static Scanner input = new Scanner (System.in);
  255.  
  256.     public static void main(String[] args) {
  257.  
  258.         int z = input.nextInt();
  259.  
  260.         Lista A = new Lista();
  261.  
  262.         A.New("T1", "W1");
  263.         A.InsertLast("T1","W2");
  264.         A.Display( "T1"  );
  265.         A.InsertFirst( "T1", "W0" );
  266.         A.Display( "T1"  );
  267.         A.Reverse("T1");
  268.         A.Display("T1");
  269.         A.InsertFirst("T1", "Z1");
  270.         A.Display("T1");
  271.         A.Reverse("T1");
  272.         A.Display("T1");
  273.  
  274. /*
  275.         A.DelFirst("T1", "T2");
  276. A.Display("T1");
  277. A.Display("T2");
  278. A.DelLast("T1", "T3");
  279. A.Display("T1");
  280. A.Display("T3");
  281. */
  282. /*
  283. A.New("T1", "W1");
  284. A.InsertLast("T1","W2");
  285. A.Display( "T1"  );
  286. A.InsertFirst( "T1", "W0" );
  287. A.Display( "T1"  );
  288. A.DelFirst("T1", "T2");
  289. A.Display("T1");
  290. A.Display("T2");
  291. A.DelLast("T1", "T3");
  292. A.Display("T1");
  293. A.Display("T3");
  294. System.out.println("--------");
  295. A.InsertFirst("T3","h1");
  296. A.Display("T3");
  297. A.InsertLast("T3","h2");
  298. A.Display("T3");
  299. A.InsertFirst("T3","j1");
  300. A.Display("T3");
  301. A.Reverse("T3");
  302. A.Display("T3");
  303. A.Union("T1","T3");
  304. A.Display("T1");
  305. A.Reverse("T1");
  306. A.Display("T1");
  307. */        /*
  308.         for(int j = 0 ; j < z ; j++)
  309.         {
  310.             int n = input.nextInt();
  311.             String polecenie = input.nextLine();
  312.             for(int k = 0 ; k < n ; k++)
  313.             {
  314.  
  315.                
  316.  
  317.             }
  318.            
  319.         }
  320.        
  321. */
  322.  
  323.     }
  324.  
  325. }
Add Comment
Please, Sign In to add comment