您的位置:首页 > 其它

LinkedStack各个方法的实现

2015-10-30 17:51 162 查看
@Override
public
void
push(T element) {
//没有满这个问题,直接入住

//首先做一个新的节点。把对象放进去
Node node = new Node();
node.data = element;
node.next = null;

//然后接到top的后面
top.next = node;
//top应该更新
top = top.next;
//size也加1
size++;
}

同样在实现Iterator和toString方便测试

@Override
public
Iterator<T>iterator() {
return
new
LinkedStackIterator<T>();
}
//从栈底开始
private
class
LinkedStackIterator<T> implementsIterator<T>{
//初始第一个数据的左面。head处
Node pointer =
head;
@Override
public
boolean
hasNext() {
//如果pointer后面不空,就返回true
if(pointer.next !=
null)
return
true
;
else
return
false
;
}

@Override
public T next() {
//返回pointer后面的节点
pointer =
pointer.next;
return
(T) pointer.data;
}

}

public String toString(){
Iterator<T> it = iterator();
StringBuilder sb =
new
StringBuilder();
while(it.hasNext())
sb.append(it.next().toString()+" ");
return
sb.toString();

}

然后再实现其他的方法,如下面的。尽量每一行都加上注释。以后好看好理解啊。

@Override
public
Tpop() {
//将top所指的栈顶干掉.先找到top前面的哥们
Node beforetop =
head;
while(beforetop.next !=
top)
beforetop =
beforetop.next;
//beforetop不要top了,就把beforetop的next设置为Null.因为在扔掉之前保存一下值
Node toBeDeleted =
top;
beforetop.next =
null;
//top被扔掉了,然后top又要回栈top的位置
top =
beforetop;
//size-1
size--;
return
toBeDeleted.data;
}

@Override
public T pop() {
//非法判断
if(size==0)
try {
throw
new
Exception("stack isempty");
} catch (Exception
e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}
//将top所指的栈顶干掉.先找到top前面的哥们
Node beforetop =
head;
while(beforetop.next !=
top)
beforetop =
beforetop.next;
//beforetop不要top了,就把beforetop的next设置为Null.因为在扔掉之前保存一下值
Node toBeDeleted =
top;
beforetop.next =
null;
//top被扔掉了,然后top又要回栈top的位置
top =
beforetop;
//size-1
size--;
return
toBeDeleted.data;
}

其他的3个就好写了。

@Override
public T peek() {
//非法判断
if(size==0)
try {
throw
new
Exception("stack isempty");
} catch (Exception
e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}
//偷瞥一把top
return
top.data;
}

@Override
public
boolean
isEmpty() {
if(size==0)
return
true
;
else
return
false
;
}

@Override
public
int
size() {
return
size;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: