アルゴリズムa 第8回


双方向リスト

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

CellDouble.java


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の実行例
$ javac RunDCellStack.java DCellStack.java DoublyLinkedList.java 
$ 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 []
$ 


アルゴリズムa 演習


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

課題8a

提出先 http://ynitta.com/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