daily pastebin goal
68%
SHARE
TWEET

Untitled

a guest Oct 21st, 2018 62 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class ListElement {
  2.     ListElement next;    // указатель на следующий элемент
  3.     int data;            // данные
  4. }
  5. class List {
  6.     private ListElement head;       // указатель на первый элемент
  7.     private ListElement tail;       // указатель последний элемент
  8.  
  9.     void addFront(int data)           //добавить спереди
  10.     {
  11.         ListElement a = new ListElement();  //создаём новый элемент
  12.         a.data = data;              //инициализируем данные.
  13.                                     // указатель на следующий элемент автоматически инициализируется как null
  14.         if(head == null)            //если список пуст
  15.         {                           //то указываем ссылки начала и конца на новый элемент
  16.             head = a;               //т.е. список теперь состоит из одного элемента
  17.             tail = a;
  18.         }
  19.         else {
  20.             a.next = head;          //иначе новый элемент теперь ссылается на "бывший" первый
  21.             head = a;               //а указатель на первый элемент теперь ссылается на новый элемент
  22.         }
  23.     }
  24.  
  25.     void addBack(int data) {          //добавление в конец списка
  26.         ListElement a = new ListElement();  //создаём новый элемент
  27.         a.data = data;
  28.         if (tail == null)           //если список пуст
  29.         {                           //то указываем ссылки начала и конца на новый элемент
  30.             head = a;               //т.е. список теперь состоит из одного элемента
  31.             tail = a;
  32.         } else {
  33.             tail.next = a;          //иначе "старый" последний элемент теперь ссылается на новый
  34.             tail = a;               //а в указатель на последний элемент записываем адрес нового элемента
  35.         }
  36.     }
  37.  
  38.     void printList()                //печать списка
  39.     {
  40.         ListElement t = head;       //получаем ссылку на первый элемент  
  41.         while (t != null)           //пока элемент существуе
  42.         {
  43.             System.out.print(t.data + " "); //печатаем его данные
  44.             t = t.next;                     //и переключаемся на следующий
  45.         }
  46.     }
  47.  
  48.     void delEl(int data)          //удаление элемента
  49.     {
  50.         if(head == null)        //если список пуст -
  51.             return;             //ничего не делаем
  52.  
  53.         if (head == tail) {     //если список состоит из одного элемента
  54.             head = null;        //очищаем указатели начала и конца
  55.             tail = null;
  56.             return;             //и выходим
  57.         }
  58.  
  59.         if (head.data == data) {    //если первый элемент - тот, что нам нужен
  60.             head = head.next;       //переключаем указатель начала на второй элемент
  61.             return;                 //и выходим
  62.         }
  63.  
  64.         ListElement t = head;       //иначе начинаем искать
  65.         while (t.next != null) {    //пока следующий элемент существует
  66.             if (t.next.data == data) {  //проверяем следующий элемент
  67.                 if(tail == t.next)      //если он последний
  68.                 {
  69.                     tail = t;           //то переключаем указатель на последний элемент на текущий
  70.                 }
  71.                 t.next = t.next.next;   //найденный элемент выкидываем
  72.                 return;                 //и выходим
  73.             }
  74.             t = t.next;                //иначе ищем дальше
  75.         }
  76.     }
  77. }
  78.  
  79. public class Main {
  80.     public static void main(String[] args) {
  81.         List ml = new List();
  82.         ml.addBack(1);
  83.         ml.addBack(2);
  84.         ml.addBack(3);
  85.         ml.addFront(6);
  86.  
  87.         ml.printList();
  88.         System.out.println();
  89.  
  90.         ml.delEl(6);
  91.         ml.delEl(5);
  92.         ml.delEl(12);
  93.         ml.delEl(2);
  94.  
  95.         ml.printList();
  96.         System.out.println();
  97.     }
  98. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top