Advertisement
Kulas_Code20

SetLinked

Oct 25th, 2021
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.67 KB | None | 0 0
  1. package com.setLinked;
  2.     /**
  3.      * @author Lloyd Samuel Garcia
  4.      * 04986 CC-DataStruc21
  5.      *  3:00 PM - 5:30 PM TTH
  6.      * MySetLinked - linked-list implementation of MySet interface
  7.      */
  8. import java.util.StringTokenizer;
  9.  
  10. public class MySetLinked implements MySet {
  11.  
  12.     private Node head, tail;
  13.     public int cardinality;
  14.     private Node position;
  15.  
  16.     // constructor
  17.     public MySetLinked(Object[] items) {
  18.         for (int i = 0; i < items.length; addElement(items[i]), i++);//editonun
  19.     }
  20.    
  21.     //default constructor
  22.     public MySetLinked() {
  23.  
  24.     }
  25.  
  26.     @Override
  27.     public boolean isFull() { return false; }
  28.  
  29.     @Override
  30.     public boolean isEmpty() { return cardinality == 0; }
  31.  
  32.     @Override
  33.     public boolean isElement(Object item) {
  34.         boolean found = false;
  35.         if (!isEmpty()) {
  36.             // sequential search
  37.             Node tnode = head;
  38.             while (tnode != null) {
  39.                 if (tnode.getItem().equals(item)) { found = true; position = tnode; break;}
  40.                 tnode = tnode.getNext();
  41.             }
  42.         }
  43.         return found;
  44.     }
  45.  
  46.     @Override
  47.     public boolean addElement(Object item) {
  48.         boolean isElem = !isElement(item);
  49.         if (isElem) {
  50.             Node node = new Node(item);
  51.             if (!isEmpty())
  52.                 tail.setNext(node);
  53.             else
  54.                 head = node;
  55.             tail = node;
  56.             cardinality++;
  57.         }
  58.         return isElem;
  59.     }
  60.  
  61.     @Override
  62.     public boolean deleteElement(Object item) {
  63.         boolean isElem = isElement(item);
  64.         Node tnode = head;
  65.         if (head == position) {
  66.             head = tnode.getNext();
  67.             tnode = null;
  68.         } else {
  69.             Node tnodenext;
  70.             for(tnodenext = tnode.getNext();tnodenext != position;tnode = tnode.getNext(),tnodenext = tnode.getNext()){
  71.             }if (tnodenext == tail) {
  72.                 tail = tnode;
  73.                 tail.setNext(null);
  74.             } else
  75.                 tnode.setNext(tnodenext.getNext());
  76.             tnodenext = null;
  77.         }
  78.         cardinality--;
  79.         return isElem;
  80.     }
  81.  
  82.     @Override
  83.     public MySet union(MySet parset) {
  84.         MySet union = new MySetLinked();
  85.         MySetLinked set = (MySetLinked) parset;
  86.         Node node = head;
  87.         while(node != null) {
  88.             union.addElement(node.getItem());
  89.             node = node.getNext();
  90.         }
  91.          StringTokenizer setTokens = new StringTokenizer(set.toString(), "{},");  
  92.          for(setTokens.hasMoreTokens(),union.addElement(setTokens.nextToken());;)
  93.                  
  94.         return union;
  95.     }
  96.  
  97.     @Override
  98.     public MySet intersect(MySet parset) {
  99.         MySet intersect = new MySetLinked();
  100.         MySetLinked pset = (MySetLinked) parset;
  101.         // populate the result set
  102.         for (Node node = head; node != null; node = node.getNext()) {
  103.             if (pset.isElement(node.getItem()))
  104.                 intersect.addElement(node.getItem());
  105.         }
  106.         return intersect;
  107.     }
  108.  
  109.     @Override
  110.     public MySet difference(MySet parset) {
  111.         MySet difference = new MySetLinked();
  112.         MySetLinked set = (MySetLinked) parset;
  113.         for (Node node = head; node != null; node = node.getNext()) {
  114.             if (!set.isElement(node.getItem()))
  115.                 difference.addElement(node.getItem());
  116.         }
  117.         return difference;
  118.     }
  119.  
  120.     @Override
  121.     public MySet crossproduct(MySet parset) {
  122.         MySet crossproduct = new MySetLinked();
  123.         MySetLinked set = (MySetLinked) parset;
  124.         for (Node node = head; node != null; node = node.getNext()) {
  125.             StringTokenizer setTokens = new StringTokenizer(set.toString(), "{},");  
  126.             while (setTokens.hasMoreTokens()) {
  127.                 MySetLinked temp = new MySetLinked();
  128.                 temp.addElement(node.getItem());
  129.                 temp.addElement(setTokens.nextToken());
  130.                 if (temp.cardinality == 2)
  131.                     crossproduct.addElement(temp);
  132.             }
  133.         }
  134.         return crossproduct;
  135.     }
  136.    
  137.     public String toString() {
  138.         StringBuffer sb = new StringBuffer();
  139.         sb.append("{");
  140.         for (Node node = head; node != null; node = node.getNext()) {
  141.             sb.append(node.getItem());
  142.             if (node.getNext() != null)
  143.                 sb.append(",");
  144.         }
  145.         sb.append("}");
  146.         return sb.toString();
  147.     }
  148. }
  149.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement