CS 206: Data Structures
Exercise#8

Due on Tuesday, March 4

1) Implement the List ADT as discussed in class using a dynamic array. Use it in your porgram from Exercise#6 (instead of the simple array of BankAccount). Functionally, your program will not change at all. The only changes will be in the use of the List ADT.

2) The implementation discussed in the class is not complete. Complete it. I.E. implement all the remaining methods: remove, set, get, and contains (see page 91 of your text). Make sure that all your List methods are correctly implemented. The versions in the text are slightly different, so be careful. The exercise below is designed to test your implementation.

3) In addition to the Bank Application, we will no use a simple List tester program to test the implementation of all the List operations. The applet below can be used as a possible List Tester program. Try it for all but the above unimplemented operations and see how the list behaves. It is written using the AList1 implementation (i.e. fixed size arrays):



The above applet is produced using the Java program below. You will need to complete the program (for the unmplemented features) to use as a tester for ALL the list operations.

/*
	A List Tester program
*/

import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;

public class TestLists extends Applet implements ActionListener
{
	// GUI Stuff
	TextArea outputArea;
	Button clearB, sizeB, emptyB, add1B, add2B, removeB, getB, setB, containsB, displayB;
	TextField add1Text, add2ItemText, add2PosText, removeText, getT, setPosText, setItemText, containsText;
	
	// Program variables
	ListInterface L;
	
	public void init() {
	
		makeGUI();
		
		L = new AList1();
		
		// print out the current length of the list
		outputArea.appendText("The list has " + L.size() + " elements.\n\n");
		
		// add a bunch of numbers to the list
		for (int i = 0; i < 10; i++)
			L.add(new Integer(i));
		
		// display the contents of the list
		displayList();
	} // init
	
	public void displayList() {
		
		outputArea.appendText("The list contains the following " + L.size() + " elements...\n");
		for (int i = 0; i < L.size(); i++)
			outputArea.appendText(L.get(i) + " ");
	
		outputArea.appendText("\n\n");
	} // displayList
	
	public void addToList() {
		String vs = add1Text.getText();
		Integer value = new Integer(vs);
		
		if (L.add(value))
			outputArea.appendText("Added " + value + " to the end of list.\n\n");
		else
			outputArea.appendText("Operation failed.\n\n");
	} // addToList
	
	public void addToList2() {
		String vs = add2ItemText.getText();
		Integer value = new Integer(vs);
		String ps = add2PosText.getText();
		Integer pI = new Integer(ps);
		int position = pI.intValue();
		
		if (L.add(position, value))
			outputArea.appendText("Added " + value + " at position " + position + ".\n\n");
		else
			outputArea.appendText("Operation failed.\n\n");
	} // addToList2
	
	public void getFromList() {
		String vs = getT.getText();
		Integer vI = new Integer(vs);
		int value = vI.intValue();
		
		outputArea.appendText("Got item: " + L.get(value) + " from position: " + value + ".\n\n");
		
	} // getFromList
	
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == clearB) {
			outputArea.appendText("Clearing the list.\n\n");
			L.clear();
		}
		else if (e.getSource() == sizeB)
			outputArea.appendText("The list contains " + L.size() + " elements.\n\n");
		else if (e.getSource() == displayB)
			displayList();
		else if (e.getSource() == add1B)
			addToList();
		else if (e.getSource() == add2B)
			addToList2();
		else if (e.getSource() == getB)
			getFromList();
		else if (e.getSource() == emptyB) {
			if (L.isEmpty())
				outputArea.appendText("The List is empty.\n\n");
			else
				outputArea.appendText("The List is not empty.\n\n");
		}
		
	} // actionPerformed
	
	public void makeGUI() {
		
		this.setLayout(new BorderLayout());
		
		// Big Panel for controls
		Panel mainPanel = new Panel();
		mainPanel.setLayout(new GridLayout(4,1));
		
		// Make the clear, size, empty, display panel
		Panel p1 = new Panel();
		
		p1.setLayout(new GridLayout(1,3));
		clearB = new Button("Clear");
		clearB.addActionListener(this);
		sizeB = new Button("Size");
		sizeB.addActionListener(this);
		emptyB = new Button("isEmpty?");
		emptyB.addActionListener(this);
		displayB = new Button("Display List");
		displayB.addActionListener(this);
		p1.add(clearB);
		p1.add(sizeB);
		p1.add(emptyB);
		p1.add(displayB);
		
		mainPanel.add(p1);
		
		// make the add panel
		Panel p2 = new Panel();
		p2.setLayout(new GridLayout(2,1));
		
		Panel add1P = new Panel();
		add1B = new Button("Add");
		add1B.addActionListener(this);
		add1Text = new TextField(5);
		add1P.add(add1B);
		add1P.add(add1Text);
		
		Panel add2P = new Panel();
		add2B = new Button("Add");
		add2B.addActionListener(this);
		add2ItemText = new TextField(5);
		Label add2L = new Label("AT");
		add2PosText = new TextField(5);
		add2P.add(add2B);
		add2P.add(add2ItemText);
		add2P.add(add2L);
		add2P.add(add2PosText);
		
		p2.setBackground(Color.gray);
		p2.add(add1P);
		p2.add(add2P);
		
		mainPanel.add(p2);
		
		// make the get and contains Panel
		Panel p4 = new Panel();
		p4.setLayout(new GridLayout(2, 1));
		
		Panel getP = new Panel();
		getB = new Button("Get");
		getB.addActionListener(this);
		getT = new TextField(5);
		getP.add(getB);
		getP.add(getT);
		
		Panel containsP = new Panel();
		containsB = new Button("Contains");
		containsB.addActionListener(this);
		containsText = new TextField(5);
		containsP.add(containsB);
		containsP.add(containsText);
		
		p4.add(getP);
		p4.add(containsP);
		mainPanel.add(p4);
		
		// make the remove and set panel
		Panel p3 = new Panel();
		p3.setLayout(new GridLayout(2,1));
		
		Panel removeP = new Panel();
		removeB = new Button("Remove");
		removeB.addActionListener(this);
		removeText = new TextField(5);
		removeP.add(removeB);
		removeP.add(removeText);
		
		Panel setP = new Panel();
		setB = new Button("Set");
		setB.addActionListener(this);
		setItemText = new TextField(5);
		Label setL = new Label("AT");
		setPosText = new TextField(5);
		setP.add(setB);
		setP.add(setItemText);
		setP.add(setL);
		setP.add(setPosText);
		
		p3.setBackground(Color.gray);
		p3.add(removeP);
		p3.add(setP);
		
		mainPanel.add(p3);
		
		
		// add the main panel
		this.add(mainPanel, "North");
		
		outputArea = new TextArea("Testing the List ADT\n\n", 400, 200, TextArea.SCROLLBARS_BOTH);
		this.add(outputArea, "Center");
		outputArea.setBackground(Color.lightGray);
		
	} // makeGUI
	
} // TestLists

Back to CS206 Course Materials