Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- *
- * @author Casey Jackson
- */
- public class HydraList{
- private letterNode h; //list Header
- private dataNode g; //dataList header
- public HydraList()
- {
- h = new letterNode();
- //g = new dataNode();
- //g.next = null;
- //g.data = null;
- //g.partNum = null;
- h.letter = ' ';
- h.next = null;
- h.data = null;
- }
- public void insert(AutoPart newPart)
- {
- letterNode p = h.next;
- letterNode q = h;
- char x = newPart.getPartNumber().charAt(0);
- while(p != null && p.letter != x)
- {
- q = p;
- p = p.next;
- }
- if (p != null)
- {
- dataNode b = q.data;
- if(b != null)
- {
- dataNode a = b.next;
- while(q.data != null)
- {
- b = a;
- a = a.next;
- }
- if (a != null)
- {
- dataNode z = new dataNode();
- z = a.next;
- a.next = z;
- z.data = newPart.deepCopy();
- z.partNum = newPart.getPartNumber();
- }
- else
- {
- dataNode z = new dataNode();
- z = a.next; // this line throws the null pointer exception, because a==null (ref: if-condition)
- a.next = z;
- z.data = newPart.deepCopy();
- z.partNum = newPart.getPartNumber();
- }
- }
- }
- else
- {
- p = h.next; // what is this for?
- letterNode n = new letterNode();
- n.next = q.next; // will not sort. just building a list
- q.next = n; // at least it's a 'pure' insert (always at beginning)
- n.letter = x;
- dataNode z = new dataNode();
- z.next = n.data; // also will not sort...
- z.data = newPart.deepCopy();
- z.partNum = newPart.getPartNumber();
- n.data = z; // above commented line + this one will always insert at beginning
- }
- }
- //
- // public void insert(AutoPart newPart)
- // {
- // letterNode p = new letterNode();
- // letterNode q = new letterNode();
- // q = h;
- // p = h.next;
- // dataNode o = new dataNode();
- // char x = newPart.getPartNumber().charAt(0);
- // if(letterIsEmpty())
- // {
- // letterNode n = new letterNode();
- // n.next = h.next;
- // h.next = n;
- // n.letter = newPart.getPartNumber().charAt(0);
- // o.next = n.data;
- // n.data = o;
- // o.partNum = newPart.getPartNumber();
- // o.data = newPart.deepCopy();
- // }
- // else
- // {
- // while(p != null && p.letter != x)
- // {
- // q = p;
- // p = p.next;
- // }
- // if(p != null)
- // {
- // if(p.data == null)
- // {
- // o.next = p.data;
- // p.data = o;
- // o.data = newPart.deepCopy();
- // o.partNum = newPart.getPartNumber();
- // }
- // else
- // {
- // //dataNode z = new dataNode();
- // dataNode z = q.data;
- // while(g!= null && !(g.partNum.compareTo
- // (newPart.getPartNumber()) == 0))
- // {
- // g = g.next;
- // }
- // if(g != null)
- // {
- // o.next = g.next;
- // g.next = o;
- // o.data = newPart.deepCopy();
- // o.partNum = newPart.getPartNumber();
- // }
- // }
- // }
- // }
- // }
- public AutoPart fetch(String targetPart)
- {
- letterNode a = h.next;
- while(a != null && a.letter != targetPart.charAt(0))
- {
- a = a.next;
- }
- if (a != null)
- {
- dataNode b = h.data;
- while(b != null && !(b.partNum.compareTo(targetPart) == 0))
- {
- b = b.next;
- }
- if (b != null)
- {
- return b.data.deepCopy();
- }
- else
- return null;
- }
- else
- {
- return null;
- }
- }
- public boolean delete(String targetPart)
- {
- letterNode b = h;
- letterNode a = h.next;
- while( a != null && a.letter != targetPart.charAt(0))
- {
- b = a;
- a = a.next;
- }
- if( a != null)
- {
- dataNode d = a.data;
- dataNode c = d.next;
- while(c != null && !(c.partNum.compareTo(targetPart) == 0))
- {
- d = c;
- c = c.next;
- }
- if (c != null)
- {
- d.next = c.next;
- if (a.data == null)
- {
- b.next = a.next;
- }
- return true;
- }
- else
- return false;
- }
- else
- return false;
- }
- public boolean update(String targetPart, float newPrice, int inStock)
- {
- AutoPart x = fetch(targetPart);
- if(x == null)
- {
- return false;
- }
- else
- {
- x.setPrice(newPrice);
- x.setNumInStock(inStock);
- return true;
- }
- }
- // public void print()
- // {
- // letterNode p = h.next;
- // dataNode q = p.data;
- // while(p != null)
- // {
- // while(q != null)
- // {
- // System.out.println(q.data);
- // q = q.next;
- // }
- // p = p.next;
- // }
- // }
- public void print()
- {
- letterNode q = h;
- letterNode p = h.next;
- //dataNode a = p.data;
- while(p != null)
- {
- dataNode a = p.data;
- while(q != null)
- {
- System.out.println(q.data);
- q = q.next;
- }
- p = p.next;
- }
- }
- public boolean letterIsEmpty()
- {
- boolean empty = false;
- if(h.next == null){
- empty = true;
- }
- return empty;
- }
- public class letterNode{
- private char letter;
- private letterNode next;
- private dataNode data;
- public letterNode(){
- }
- }
- public class dataNode{
- private AutoPart data;
- private String partNum;
- private dataNode next;
- public dataNode()
- {
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement