求大神指点SListIterator的每个步骤的思路,自己看后没有理出来

jg930628 2018-03-05 09:26:33
public interface SListIterator<T> {
boolean hasNext();
T next();
void remove();
void add(T element);

}


import java.util.NoSuchElementException;

public class SList<T> {
private final Link<T> header = new Link<T>(null, null);

SList() {
header.next = header;
}

public String toString() {
StringBuilder buf = new StringBuilder();
buf.append("[");
for (SListIterator<T> it = iterator(); it.hasNext();) {
T element = it.next();
buf.append(element == this ? "(this SList)" : String.valueOf(element));
if (it.hasNext())
buf.append(", ");
}
buf.append("]");
return buf.toString();
}

public SListIterator<T> iterator() {
return new SListIteratorImpl();
}

private static class Link<T> {
T element;
Link<T> next;

Link(T element, Link<T> next) {
this.element = element;
this.next = next;
}
}

private class SListIteratorImpl implements SListIterator<T> {
private Link<T> lastReturned = header;
private Link<T> result;
private Link<T> next;

SListIteratorImpl() {
next = header.next;
}

public boolean hasNext() {
return next != header;
}

public T next() {
if (next == header)
throw new NoSuchElementException();
lastReturned = next;
next = next.next;
return lastReturned.element;
}

public void remove() {
if (lastReturned == header)
throw new IllegalStateException();
// Find an element before the last returned one
for (Link<T> curr = header;; curr = curr.next)
if (curr.next == lastReturned) {
curr.next = lastReturned.next;
break;
}
lastReturned = header;
}

public void add(T element) {
lastReturned = header;
Link<T> newLink = new Link<T>(element, next);
if (header.next == header) // Empty list
header.next = newLink;
else {
// Find an element before the one pointed by 'next'
for (Link<T> curr = header;; curr = curr.next)
if (curr.next == next) {
curr.next = newLink;
break;
}
}
}
}

}
...全文
109 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧