7.使用LinkedList。自己练习一道题,使用LinkedList常用的方法。java代码
时间: 2024-03-10 17:48:57 浏览: 22
好的,这里提供一个使用LinkedList解决的题目:链表的中间结点。
题目描述:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。
示例:
```
输入:1 -> 2 -> 3 -> 4 -> 5 -> null
输出:3 -> 4 -> 5 -> null
```
思路:使用快慢指针,慢指针每次移动一步,快指针每次移动两步,当快指针到达链表末尾时,慢指针就到达了链表的中间位置。
代码实现:
```java
public ListNode middleNode(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode slow = head;
ListNode fast = head;
while (fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;
}
return slow;
}
```
其中ListNode是自定义的链表节点类,具体实现如下:
```java
public class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
```
相关问题
7.使用LinkedList。自己练习一道题,使用LinkedList常用的方法。代码
好的,这里提供一个使用LinkedList解决的题目:反转链表。
题目描述:给定一个单向链表的头节点head,将其翻转并返回新的头节点。
示例:
```
输入:1 -> 2 -> 3 -> 4 -> 5 -> null
输出:5 -> 4 -> 3 -> 2 -> 1 -> null
```
思路:使用三个指针prev、cur、next,分别指向前一个节点、当前节点和后一个节点,每次将cur的next指向prev,然后依次向后移动指针。
代码实现:
```java
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode prev = null;
ListNode cur = head;
ListNode next = head.next;
while (cur != null) {
cur.next = prev;
prev = cur;
cur = next;
if (next != null) {
next = next.next;
}
}
return prev;
}
```
其中ListNode是自定义的链表节点类,具体实现如下:
```java
public class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
```
关于List接口及ArrayList子接口、LinkedList子接口中常用方法的练习:
好的,让我们来练习一些常用的List接口及其子接口中的方法。
1. 创建一个ArrayList对象,添加三个元素,然后打印出list的大小。
```java
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
System.out.println("list size: " + list.size());
```
2. 使用for循环遍历上面创建的ArrayList,打印出每个元素。
```java
for (String fruit : list) {
System.out.println(fruit);
}
```
3. 创建一个LinkedList对象,并在末尾添加两个元素,然后使用get()方法获取第一个和第二个元素。
```java
List<String> linkedList = new LinkedList<>();
linkedList.add("dog");
linkedList.add("cat");
String first = linkedList.get(0);
String second = linkedList.get(1);
System.out.println("First element: " + first);
System.out.println("Second element: " + second);
```
4. 使用remove()方法从上面创建的ArrayList中删除一个元素,然后打印出删除后的list大小和剩余元素。
```java
list.remove("banana");
System.out.println("list size after remove: " + list.size());
for (String fruit : list) {
System.out.println(fruit);
}
```
5. 使用addAll()方法将上面创建的LinkedList中的所有元素添加到ArrayList中,然后打印出ArrayList中的所有元素。
```java
list.addAll(linkedList);
for (String fruit : list) {
System.out.println(fruit);
}
```
以上就是关于List接口及其子接口中常用方法的练习,希望对您有所帮助。