Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ossm.manicom.sadie.arraysandlists;
- import java.util.*;
- public class linkedlistClass implements customList
- {
- class Node
- {
- Node next;
- int data;
- Node(Node next, int data)
- {
- this.data = data;
- this.next = next;
- }
- private void doClear()
- {
- beginMarker = new Node<Integer>();
- endMarker = new Node<Integer>(null, beginMarker, null);
- beginMarker.next = endMarker;
- theSize = 0;
- modCount++;
- }
- }
- public linkedlistClass()
- {
- doClear();
- }
- public void clear()
- {
- doClear();
- }
- private void doClear()
- {
- beginMarker = new Node<Integer>(null, null, null);
- endMarker = new Node<Integer>(null, beginMarker, null);
- beginMarker.next = endMarker;
- theSize = 0;
- modCount++;
- }
- public int Size()
- {
- return theSize;
- }
- public boolean isEmpty()
- {
- return size() == 0;
- }
- public boolean Add(int x)
- {
- Add(size(), x);
- return true;
- }
- public void Add(int idx, int x)
- {
- addBefore(getNode(idx, 0, size()), x);
- }
- public int Get(int idx)
- {
- return getNode(idx).data;
- }
- public int set(int idx, int newVal)
- {
- Node<Integer> p = getNode(idx);
- AnyType oldVal = p.data;
- p.data = newVal;
- return oldVal;
- }
- public int Delete(int idx)
- {
- return Delete(getNode(idx));
- }
- private void prepend(Node<Integer> p, int x)
- {
- Node<Integer> newNode = new Node<>(x, p.prev, p);
- newNode.prev.next = newNode;
- p.prev = newNode;
- theSize++;
- modCount++;
- }
- private int Delete(Node<Integer> p)
- {
- p.next.prev = p.prev;
- p.prev.next = p.next;
- theSize--;
- modCount++;
- }
- private Node<Integer> getNode(int idx)
- {
- return getNode(idx, 0, size() - 1);
- }
- private Node<Integer> getNode(int idx, int lower, int upper)
- {
- Node<Integer> p;
- if(idx < size() / 2)
- {
- p = beginMarker.next;
- for(int i = 0; i< idx; i++)
- p = p.next;
- }
- else
- {
- p = endMarker;
- for(int i = size(); i > idx; i--)
- p=p.prev;
- }
- return p;
- }
- @Override
- public void IncreaseListSize() {
- // TODO Auto-generated method stub
- }
- @Override
- public void incrementCounter() {
- // TODO Auto-generated method stub
- }
- public static void main(String[] args)
- {
- linkedlistClass mal = new linkedlistClass();
- mal.Add(new Integer(2));
- mal.Add(new Integer(5));
- for(int i=0; i<mal.Size(); i++)
- {
- System.out.println(i);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement