Advertisement
Nick-O-Rama

BirdList2

May 8th, 2015
651
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.37 KB | None | 0 0
  1.  
  2. public class BirdList {
  3.  
  4.     private Node head;
  5.  
  6.     public BirdList() {
  7.         head = null;
  8.     }
  9.  
  10.     // --- INSERT METHODS --- //
  11.     public void insert(String n) {
  12.         if (head == null) {
  13.             insertFirst(n);
  14.             return;
  15.         }
  16.         if (find(n)) {
  17.             int pos = findIndex(n);
  18.             int start = 0;
  19.             Node ref = head;
  20.             while (start < pos) {
  21.                 ref = ref.next;
  22.                 start++;
  23.             }
  24.             ref.frequency++;
  25.         } else
  26.             insertLast(n);
  27.     }
  28.  
  29.     public void insertFirst(String n) {
  30.         Node newNode = new Node(n);
  31.         newNode.next = head;
  32.         head = newNode;
  33.     }
  34.  
  35.     public void insertLast(String n) {
  36.         Node newNode = new Node(n);
  37.         if (head == null)
  38.             head = newNode;
  39.         else if (head.next == null)
  40.             head.next = newNode;
  41.         else {
  42.             Node ref = head;
  43.             while (ref.next != null) {
  44.                 ref = ref.next;
  45.             }
  46.             ref.next = newNode;
  47.         }
  48.     }
  49.  
  50.     // --- Size Method --- //
  51.     public int getSize() {
  52.         Node ref = head;
  53.         int size = 0;
  54.         while (ref != null) {
  55.             size++;
  56.             ref = ref.next;
  57.         }
  58.         return size;
  59.     }
  60.  
  61.     // --- FIND METHODS --- //
  62.     public boolean find(String n) // Returns true if name is found in list
  63.     {
  64.         Node ref = head;
  65.         while (ref != null) {
  66.             if (ref.name.equals(n))
  67.                 return true;
  68.             ref = ref.next;
  69.         }
  70.         return false;
  71.     }
  72.    
  73.     public String getInfo(int index) {
  74.         int start = 0;
  75.         Node ref = head;
  76.         while (start < index) {
  77.             start++;
  78.             ref = ref.next;
  79.         }
  80.         return ref.toString();
  81.     }
  82.  
  83.     public int findIndex(String n) {
  84.         int index = -1;
  85.         if (!find(n))
  86.             return index;
  87.         else {
  88.             Node ref = head;
  89.             index = 0;
  90.             while (ref != null) {
  91.  
  92.                 if (ref.name.equals(n))
  93.                     break;
  94.                 index++;
  95.                 ref = ref.next;
  96.             }
  97.             return index;
  98.         }
  99.     }
  100.  
  101.     // --- SORT METHODS --- //
  102.     public void sort() {
  103.         for (Node ref = head; ref != null; ref = ref.next) {
  104.             for (Node ref2 = ref.next; ref2 != null; ref2 = ref2.next) {
  105.                 if (ref.frequency < ref2.frequency) {
  106.                     String tempName = ref.name;
  107.                     int tempFreq = ref.frequency;
  108.                     ref.name = ref2.name;
  109.                     ref.frequency = ref2.frequency;
  110.                     ref2.name = tempName;
  111.                     ref2.frequency = tempFreq;
  112.                 }
  113.             }
  114.         }
  115.     }
  116.     public void sortRev() {
  117.         for (Node ref = head; ref != null; ref = ref.next) {
  118.             for (Node ref2 = ref.next; ref2 != null; ref2 = ref2.next) {
  119.                 if (ref.frequency > ref2.frequency) {
  120.                     String tempName = ref.name;
  121.                     int tempFreq = ref.frequency;
  122.                     ref.name = ref2.name;
  123.                     ref.frequency = ref2.frequency;
  124.                     ref2.name = tempName;
  125.                     ref2.frequency = tempFreq;
  126.                 }
  127.             }
  128.         }
  129.     }
  130.    
  131.     public void remove(String n) {
  132.         if (find(n)) {
  133.             Node ref = head;
  134.             Node prev = head;
  135.             while (!ref.name.equals(n)) {
  136.                 prev = ref;
  137.                 ref = ref.next;
  138.             }
  139.             if (ref == head)
  140.                 head = head.next;
  141.             prev.next = ref.next;
  142.         }
  143.     }
  144.  
  145.     // --- PRINT METHODS --- ///
  146.     public void printList() {
  147.         Node ref = head;
  148.         while (ref != null) {
  149.             System.out.println(ref.name + ": " + ref.frequency);
  150.             ref = ref.next;
  151.         }
  152.     }
  153.    
  154.     public String toString() {
  155.         String result = "";
  156.         Node ref = head;
  157.         while (ref != null) {
  158.             result += ref.toString() + "\n";
  159.             ref = ref.next;
  160.         }
  161.         return result;
  162.     }
  163.  
  164.     class Node {
  165.         private String name;
  166.         private int frequency;
  167.         private Node next;
  168.  
  169.         public Node(String n) {
  170.             this.name = n;
  171.             this.frequency = 1;
  172.             next = null;
  173.         }
  174.        
  175.         public String toString() {
  176.             return this.name + ": " + this.frequency;
  177.         }
  178.     }
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement