View
215
Download
2
Embed Size (px)
Citation preview
Linked ListsLinked Lists
CSC 172 SPRING 2004
LECTURE 6
ANNOUNCEMENTSANNOUNCEMENTS
Project 2 due Wed, Feb 18th, 5PM, CSBRead Weiss Chapter 17
Department T shirts available $10
Doubly Linked ListDoubly Linked List
Ex 4 : Write the “DoubleNode” class
An empty Doubly Linked ListAn empty Doubly Linked List
How does this (the existence of head & tail) change traverse & print?
DeletionDeletion
Ex 6: Write a method to delete from doubly linked list
assume comparable Objects public void delete(Comparable obj)
public void delete (Comparable obj) {Node current = head;while (current != tail) {
if (obj.equals(current.data)) {(current.next).prev = current.prev;(current.prev).next = current.next;return;
}current = current.next;
} }
InsertionInsertion
Ex 6: Write a method to insert from doubly linked list
public void insertAfter(Node n, Comparable obj)
public void insertAfter(Node n, Object obj){
Node newNode = new DoubleNode();
newNode.data = obj;
newNode.prev = n;
newNode.next = n.next;
(newNode.prev).next = newNode;
(newNode.next).prev = newNode;
}
A List IteratorA List Iterator
Iterator FunctionalityIterator Functionality
Iterator nextIterator nextpublic Object next() {
if (position == null){ position = first;return getFirst();
} else { if (position.next == null) throw new NoSuchElementException();previous = position; // remember for removeposition = position.next;return position.data;}
}
Adding to middleAdding to middle
Adding to middleAdding to middlepublic void add(Object obj){
if (position == null)addFirst(obj);
else { Link newLink = new Link();newLink.data = obj;newLink.next = position.next;position.next = newLink;position = newLink;previous = null;
}}
Removing from middleRemoving from middle
Removing from middleRemoving from middlepublic void remove(){
if (position == first) removeFirst();
else{
if (previous == null)
throw new IllegalStateException();
previous.next = position.next;
position = previous;
}
previous = null;
}
}