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;
}
}
package ch1_prob1;
public class Link
E element;
Link
Link(E item, Link
Link(E item){element = item;}
E element(){return element;}
E setElement(E it){return element = it;}
Link
Link
}
--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
Link
Link
Link
int cnt;
LList()
{
curr = head = tail = new Link
//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 = new LList
List
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
if(tail == curr) tail = curr.next();
cnt++;
}
@Override
public void append(E item) {
// TODO Auto-generated method stub
tail = tail.setNext( new Link
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
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
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
Post a Comment