Advertisement
Guest User

Single Linkedlist

a guest
Sep 27th, 2016
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.88 KB | None | 0 0
  1. public class LinkedList<DataType> {
  2.  
  3.     private Link<DataType> firstLink;
  4.  
  5.     private Link lastLink() {
  6.         Link l = firstLink.getNext();
  7.         if (l == null) {
  8.             return firstLink;
  9.         }
  10.         while (l.getNext() != null) {
  11.             l = l.getNext();
  12.         }
  13.         return l;
  14.     }
  15.  
  16.     public int size() {
  17.         int counter = 2;
  18.         Link l = firstLink.getNext();
  19.         if (l == null) {
  20.             return 1;
  21.         }
  22.         while (l.getNext() != null) {
  23.             l = l.getNext();
  24.             counter++;
  25.         }
  26.         return counter;
  27.     }
  28.  
  29.     public DataType get(int index) {
  30.         if (index == 0) {
  31.             return firstLink.getData();
  32.         }
  33.  
  34.         int counter = 1;
  35.         Link<DataType> l = firstLink.getNext();
  36.  
  37.         while (true) {
  38.             if (counter == index) {
  39.                 return l.getData();
  40.             }
  41.             l = l.getNext();
  42.             counter++;
  43.         }
  44.     }
  45.  
  46.     private Link getLink(int index) {
  47.         if (index == 0) {
  48.             return firstLink;
  49.         }
  50.  
  51.         int counter = 1;
  52.         Link<DataType> l = firstLink.getNext();
  53.  
  54.         while (true) {
  55.             if (counter == index) {
  56.                 return l;
  57.             }
  58.             l = l.getNext();
  59.             counter++;
  60.         }
  61.     }
  62.  
  63.     public void add(DataType data) {
  64.         if (firstLink == null) {
  65.             firstLink = new Link<>(data);
  66.         } else {
  67.             lastLink().link(new Link(data));
  68.         }
  69.     }
  70.  
  71.     public void pop() {
  72.         if (size() == 1) {
  73.             firstLink = null;
  74.         } else if (size() != 0) {
  75.             getLink(size() - 2).removeLink();
  76.         }
  77.     }
  78.  
  79.     public void pop(int index) {
  80.         if (index == 0) {
  81.             firstLink = null;
  82.         } else {
  83.             getLink(index - 1).link(getLink(index).getNext());
  84.         }
  85.     }
  86.  
  87.     public void insert(DataType data, int index) {
  88.         Link l = new Link(data);
  89.         l.link(getLink(index));
  90.         if (index == 0) {
  91.             firstLink = l;
  92.         } else {
  93.             getLink(index - 1).link(l);
  94.         }
  95.     }
  96.  
  97.     public void replace(DataType data, int index) {
  98.         Link l = new Link(data);
  99.         l.link(getLink(index).getNext());
  100.         if (index == 0) {
  101.             firstLink = l;
  102.         } else {
  103.             getLink(index - 1).link(l);
  104.         }
  105.     }
  106.  
  107.     private class Link<DataType> {
  108.  
  109.         private Link next;
  110.         private DataType data;
  111.  
  112.         public Link(DataType data) {
  113.             this.data = data;
  114.         }
  115.  
  116.         public void link(Link link) {
  117.             next = link;
  118.         }
  119.  
  120.         public DataType getData() {
  121.             return data;
  122.         }
  123.  
  124.         public Link getNext() {
  125.             return next;
  126.         }
  127.  
  128.         public void removeLink() {
  129.             next = null;
  130.         }
  131.  
  132.     }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement