java自定义双向链表
时间: 2023-10-18 20:26:59 浏览: 97
自定义双向链表
在Java中,我们可以自定义双向链表来实现一些特定的需求。双向链表是一种数据结构,它的每个节点都包含一个指向前一个节点和后一个节点的指针。这使得在双向链表中进行插入和删除操作非常高效,因为只需要修改前后节点的指针就可以完成。另外,访问节点可能会比较慢,因为需要从第一个节点开始遍历链表。但是,Java的LinkedList类提供了丰富的方法,可以模拟链式队列、链式堆栈等数据结构,为用户提供了极大的方便。
下面是一个简单的自定义双向链表的Java代码示例:
```java
// 定义节点类
class HeroNode2 {
public int no;
public String name;
public String nickname;
public HeroNode2 next; // 指向下一个节点,默认为null
public HeroNode2 pre; // 指向上一个节点,默认为null
// 构造器
public HeroNode2(int no, String name, String nickname) {
this.no = no;
this.name = name;
this.nickname = nickname;
}
@Override
public String toString() {
return "HeroNode2{" +
"no=" + no +
", name='" + name + '\'' +
", nickname='" + nickname + '\'' +
'}';
}
}
// 自定义双向链表类
class DoubleLinkedList {
private HeroNode2 head; // 头节点
// 构造器
public DoubleLinkedList() {
head = new HeroNode2(0, "", "");
}
// 在链表尾部添加节点
public void add(HeroNode2 node) {
HeroNode2 temp = head;
while (temp.next != null) {
temp = temp.next;
}
temp.next = node;
node.pre = temp;
}
// 遍历链表
public void display() {
HeroNode2 temp = head.next;
while (temp != null) {
System.out.println(temp);
temp = temp.next;
}
}
// 在某个节点后面插入新节点
public void insertAfter(HeroNode2 newNode, HeroNode2 afterNode) {
HeroNode2 temp = head;
while (temp != null) {
if (temp == afterNode) {
newNode.next = temp.next;
if (temp.next != null) {
temp.next.pre = newNode;
}
newNode.pre = temp;
temp.next = newNode;
break;
}
temp = temp.next;
}
}
// 删除某个节点
public void delete(HeroNode2 node) {
HeroNode2 temp = head;
while (temp != null) {
if (temp == node) {
temp.pre.next = temp.next;
if (temp.next != null) {
temp.next.pre = temp.pre;
}
break;
}
temp = temp.next;
}
}
}
```
以上是一个简单的自定义双向链表的实现。你可以根据需要添加其他方法或功能来满足具体需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [Java双向链表的实现](https://download.csdn.net/download/weixin_38669628/11056304)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [Java 自定义双向链表](https://blog.csdn.net/ana35287/article/details/102111857)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [Java实现双向链表](https://blog.csdn.net/m0_63732435/article/details/127195219)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
阅读全文