Guest User

Untitled

a guest
Oct 21st, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.68 KB | None | 0 0
  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. }
Add Comment
Please, Sign In to add comment