Chapter 4 -- problem 1 Solution -- Clifford A. Shaffer

--class Link-----
package ch1_prob1;

public class Link {

    E element;
    Link next;
   
    Link(E item, Link nextVal){element = item; next = nextVal;}
    Link(E item){element = item;}
   
    E element(){return element;}
    E setElement(E it){return element = it;}
   
    Link next(){return next;}
    Link setNext(Link nextVal){return next = nextVal;}
}


--interface List--------
package ch1_prob1;

public interface List {

    public void clear();
    public void insert(E item);
    public void append(E item);
   
    public void moveToStart();
    public void moveToEnd();
    public void moveToPos(int pos);
   
    public void next();
    public void prev();
   
    public int length();
    public int currPos();
   
    public E getValue();
    public E remove();
   
}



-- class LList main class--



package ch1_prob1;

public class LList implements List {

    Link head;
    Link curr;
    Link tail;
    int cnt;
   
    LList()
    {
        curr = head = tail = new Link(null);
        //head.setNext(null);
        cnt =0;
    }
   
    public String toString()
    {
        int oldPos = currPos();
        int length = length();
        StringBuffer out = new StringBuffer((length +1) * 4);
       
        moveToStart();
        out.append("< ");
        for(int i=0; i        {
            out.append(getValue());
            out.append(" ");
            next();
        }
       
        out.append(" | ");
       
        for(int i=oldPos; i        {
            out.append(getValue());
            out.append(" ");
            next();
        }
        out.append(" > ");
        moveToPos(oldPos);
       
        return out.toString();
    }
   
    public static void main(String[] args)
    {
        List L1;
        L1 = new LList();
       
        List L2;
        L2 = new LList();
       
        L1.append(10);
        L1.append(20);
        L1.append(15);
       
        L2.append(10);
        L2.append(20);
        L2.append(15);
        L2.moveToStart();
        L2.insert(39);
       
        L2.next();
       
        L2.insert(12);
       

        System.out.println(L2.toString());
    }
   
       
    @Override
    public void clear() {
        // TODO Auto-generated method stub
        head.setNext(null);
        curr = head = tail = new Link<>(null);
        cnt = 0;
    }

    @Override
    public void insert(E item) {
        // TODO Auto-generated method stub
        curr.setNext(new Link(item, curr.next()));
        if(tail == curr) tail = curr.next();
        cnt++;       
    }

    @Override
    public void append(E item) {
        // TODO Auto-generated method stub
        tail = tail.setNext( new Link(item, null));
        cnt++;
    }

    @Override
    public void moveToStart() {
        // TODO Auto-generated method stub
        curr = head;
    }

    @Override
    public void moveToEnd() {
        // TODO Auto-generated method stub
        curr = tail;
    }

    @Override
    public void moveToPos(int pos) {
        // TODO Auto-generated method stub
        curr = head;
        for(int i=0; i    }

    @Override
    public void next() {
        // TODO Auto-generated method stub
        curr = curr.next();
    }

    @Override
    public void prev() {
        // TODO Auto-generated method stub
        Link temp = head;
        while(temp.next() != curr) temp = temp.next();
        curr = temp;
    }

    @Override
    public int length() {
        // TODO Auto-generated method stub
        return cnt;
    }

    @Override
    public int currPos() {
        // TODO Auto-generated method stub
        int i;
        Link temp = head;
        for(i=0; curr != temp; i++) temp = temp.next();
        return i;
    }

    @Override
    public E getValue() {
        // TODO Auto-generated method stub
        return curr.next().element();
    }

    @Override
    public E remove() {
        // TODO Auto-generated method stub
        E it = curr.next().element();
        if(tail == curr.next()) tail = curr;
        curr.setNext(curr.next().next());
        cnt--;
        return it;
    }

}

Comments

Popular posts from this blog

like php