アルゴリズムA 第8回


双方向リスト

セルの中に「次の要素を指す」フィールドだけではなくて、 「前の要素を指す」フィールドを持っています。

CellDouble.java
public class CellDouble {
    CellDouble prev;
    CellDouble next;
    Object data;
    public CellDouble(Object aData) {
	prev = null;
	next = null;
	data = aData;
    }
}
DoublyLinkedList.java
授業で配布するプリントを参照して下さい。
DoublyLinkedListIterator.java
授業で配布するプリントを参照して下さい。
TestDLList.java
授業で配布するプリントを参照して下さい。
TestDLList.javaの実行例
% javac TestDLList.java DoublyLinkedList.java DoublyLinkedListIterator.java
% java TestDLList < TestCLList01.txt
removeFirst null
removeLast null
0
[c a b d ]
4
10
[h g f e c a b d i j k l m ]
% java TestDLList < TestCLList02.txt
removeFirst null
[a ]
removeLast a
[]
removeLast b
removeFirst c
removeFirst d
removeFirst f
removeFirst e
removeLast h
[i g ]
2

双方向リストを用いてスタックを作る

DCellStack.java
授業で配布するプリントを参照して下さい。
RunDCellStack.java
授業で配布するプリントを参照して下さい。
RunDCellStack.javaの実行例
sp204: ~/pro 4> javac RunDCellStack.java DCellStack.java DoublyLinkedList.java 
sp204: ~/pro 5> java RunDCellStack 
push a [a ]
push b [a b ]
push c [a b c ]
pop  c [a b ]
push d [a b d ]
push e [a b d e ]
push f [a b d e f ]
pop  f [a b d e ]
pop  e [a b d ]
pop  d [a b ]
pop  b [a ]
pop  a []
sp204: ~/pro 6> 


アルゴリズムA 演習


課題提出〆切は次回の講義の開始時刻です。

課題8a

提出先 http://nw.tsuda.ac.jp/class/algoA/local/handin/list.php?id=kadaia8
提出ファイルDoublyLinkedList.java
コメント欄: TestDLList.javaにTestCLList03.txtを入力として 与えたときの出力

「双方向リスト」のクラスである DoublyLinkedList.java を作成しなさい。 また DoublyLinkedList クラスのイテレータである DoublyLinkedListIterator.java を作成しなさい。

TestCLList03.txt
removeFirst
addFirst a
removeLast
removeFirst
removeLast
show
length
addLast b
removeFirst
show
length
addFirst c
addFirst d
addLast e
addLast f
removeFirst
removeLast
removeLast
show
length
addLast g
addFirst h
show
length
exit