java - Java - 双链表实现
问题描述
我正在学习数据结构。所以我正在尝试实现doubly linked list in Java.
我正在尝试实现
insertAtAnyPosition
方法
使用这种方法,我可以在任何指定的索引处插入值。
public class DoublyLinkedList {
Node head = null;
public void insert(int data) {
Node node = new Node();
node.data = data;
node.next = null;
if(head == null)
head = node;
else {
Node n = head;
while(n.next != null ) {
n = n.next;
}
n.next = node;
node.previous = n.next;
}
}
public void insertAtStart(int data) {
Node node = new Node();
node.previous = null;
node.data = data;
head.previous = node;
node.next = head;
head = node;
}
public void insertAtAnyPosition(int index, int data) {
Node node = new Node();
node.data = data;
Node n = head;
for (int i = 0; i < index-1; i++) {
n = n.next;
}
Node n1 = n.next.previous;
node.previous = n1;
node.next = n.next;
n.next = node;
n1 = node;
}
public void display() {
Node n = head;
while(n.next != null) {
System.out.println(n.data);
n = n.next;
}
System.out.println(n.data);
}
}
节点类
public class Node {
int data;
Node next;
Node previous;
}
主要方法
public static void main(String[] args) {
// TODO Auto-generated method stub
DoublyLinkedList list = new DoublyLinkedList();
list.insert(12);
list.insert(4);
list.insert(1);
list.insert(30);
list.insertAtAnyPosition(4,100); // Null Pointer Exception thrown when trying to insert at 4th Index.
list.display();
}
"Null Pointer Exception"
当我尝试在4th Index
. 并且在这一行中引发了异常Node n1 = n.next.previous;
但是上面的代码有效,当我尝试在索引处插入元素1,2,3
而不是在 4 中插入元素时。谁能帮我解决这个问题?
解决方案
罪魁祸首是 n.next.privious ,它一定会为您造成空指针异常
public void insertAtAnyPosition(int index, int data) {
Node node = new Node();
node.data = data;
Node n = head;
for (int i = 0; i < index-1; i++) {
n = n.next;
}
Node n1 ;
if(n.next== null){
. n1 = n;
}else{
n1 =n.next.previous;
}
node.previous = n1;
node.next = n.next;
n.next = node;
n1 = node;
推荐阅读
- c++ - 如何为我的类型正确专门化 std::swap?
- node.js - 如何使用 mocha/chai 设置 jwt cookie?
- command-line - “doxygen -s -g ini”中的“-s”是什么意思?有什么猜测吗?
- django - 创建新模型对象时,填充其中一个值
- javascript - 如何更新许多 Mongo 文档 Node.js 异步?
- r - R中的函数“sample”无法正常工作
- go - Golang TCP 代理(io.Copy)在使用 io.Multiwriter 时中断
- docker - 如何备份和恢复 apache ignite docker?
- reactjs - 在 React ant 设计中应用类型
- python - 如何在python中为乌龟添加物理