LinkedList.removeFirst()
时间: 2024-04-25 18:24:42 浏览: 25
LinkedList.removeFirst()方法的作用是从链表中删除并返回第一个元素。该方法首先会检查链表是否为空,如果为空则抛出NoSuchElementException异常。然后,它会获取第一个节点,并将其存储在变量f中。接下来,它会获取f节点的元素,并将其存储在变量element中。同时,它还会获取f节点的下一个节点,并将其存储在变量next中。然后,它会将f节点的元素和下一个节点都置为null,以便帮助垃圾回收器回收内存。接着,它会将链表的第一个节点指向next节点。如果next节点为null,表示链表只有一个节点,那么将链表的最后一个节点也置为null。否则,将next节点的prev指针置为null,以删除f节点。最后,将链表的大小减一,并返回被删除的元素element。
相关问题
StringStack . java package ch3; import java . util .*; public class StringStack ( private LinkedList < String > linkedList ; public StringStack )( linkedList = new LinkedList < String >(); public void push ( String name )( //将元素加入串行前端 linkedList . addFirst ( name ); public String top ()( //取得串行第一个元素 return linkedList . getFirst (; public String pop (){ //移出第一个元素 return linkedList . removeFirst (; public boolean isEmpty ()( //串行是否为空 return linkedList .isEmpty0; public static void main ( String ] args ){ StringStack sstack = new StringStack (); sstack . push (" first "); sstack . push (" second "); sstack . push (" third "); while (! sstack . isEmpty ())( System . out . println ( sstack . pop ());这段代码的类是一个存储 String 类对象的栈,请将其改造 为泛型类 GenericStack ,该类支持存储泛型类对象的元素。
下面是改造后的代码:
```
package ch3;
import java.util.LinkedList;
public class GenericStack<E> {
private LinkedList<E> linkedList;
public GenericStack() {
linkedList = new LinkedList<E>();
}
public void push(E element) {
linkedList.addFirst(element);
}
public E top() {
return linkedList.getFirst();
}
public E pop() {
return linkedList.removeFirst();
}
public boolean isEmpty() {
return linkedList.isEmpty();
}
public static void main(String[] args) {
GenericStack<String> sstack = new GenericStack<String>();
sstack.push("first");
sstack.push("second");
sstack.push("third");
while (!sstack.isEmpty()) {
System.out.println(sstack.pop());
}
}
}
```
在原有代码的基础上,我们将类名改为 `GenericStack<E>`,其中 `E` 表示元素类型,使用泛型来支持存储任意类型的元素。在构造函数和成员变量中,将 `LinkedList<String>` 改为 `LinkedList<E>`,表示使用泛型类型来存储元素。其余的方法也都使用泛型类型来定义参数和返回值。在 `main` 方法中,我们使用 `GenericStack<String>` 来实例化泛型类,表示存储的元素类型为 `String`。
importjava.util.*;publicclassStringStack{privateLinkedList<String>linkedList;publicStringStack(){linkedList=newLinkedList<String>();}publicvoidpush(Stringname){//将元素加入串行前端linkedList.addFirst(name);}publicStringtop(){//取得串行第一个元素returnlinkedList.getFirst();}publicStringpop(){//移出第一个元素returnlinkedList.removeFirst();}publicbooleanisEmpty(){//串行是否为空returnlinkedList.isEmpty();}publicstaticvoidmain(String[]args){StringStacksstack=newStringStack();sstack.push("first");sstack.push("second");sstack.push("third");while(!sstack.isEmpty()){System.out.println(sstack.pop());}}}上述的类是一个存储String类对象的栈,请将其改造为泛型类GenericStack,该类支持存储泛型类对象的元素。
改造后的泛型类GenericStack代码如下:
```
import java.util.*;
public class GenericStack<E> {
private LinkedList<E> linkedList;
public GenericStack() {
linkedList = new LinkedList<E>();
}
public void push(E element) { // 将元素加入串行前端
linkedList.addFirst(element);
}
public E top() { // 取得串行第一个元素
return linkedList.getFirst();
}
public E pop() { // 移出第一个元素
return linkedList.removeFirst();
}
public boolean isEmpty() { // 串行是否为空
return linkedList.isEmpty();
}
public static void main(String[] args) {
GenericStack<String> stack = new GenericStack<String>();
stack.push("first");
stack.push("second");
stack.push("third");
while (!stack.isEmpty()) {
System.out.println(stack.pop());
}
}
}
```
在原有的类定义上,我们增加了一个泛型类型参数E,并在相关的地方使用了这个泛型类型。这样,我们就可以使用该类来存储任意类型的元素了。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)