你好我试图通过传递值作为参数从有序列表中删除一个节点,但我总是得到和Null指针异常。以下是我用来执行此操作的方法。
public void sortedDelete(int social){
if(sortedIsEmpty()){
System.out.println("List is Empty");
}
else if(sortedSize() == 1){
if(head.getData() == social)
head = null;
}else{
SocialNode x = head;
if(x.getData() == social)
head = head.getNext();
else{
int count = 1;
x = x.getNext();
while(x!= null){
if(x.getData() == social && x.getNext() != null){
sortedGet(count-1).setNext(sortedGet(count+1));
}else if(x.getData() == social && x.getNext() == null){
sortedGet(count-1).setNext(null);
}
x = x.getNext();
count ++;
}
}
}
}
全班代码在这里 Implementation of a List in Java
答案 0 :(得分:0)
使用arrayList的更好方法但我可以看到在你的情况下不允许使用arrayList。在这种情况下,您需要删除旧数组并创建一个比原始数组小1的新数组,并将旧数组复制到新数组。你可以从下面的代码中获得帮助。
package com.rais;
public class ArrayExample {
public static void main(String[] args) {
int[] numbers = {1,2,3,4,5,6,7};
numbers = remove(numbers, 4);
for (int i : numbers) {
System.out.println(i);
}
}
public static int[] remove(int[] originalArray, int elemntToDelete)
{
for (int i = 0; i < originalArray.length; i++)
{
if (originalArray[i] == elemntToDelete)
{
int[] newArray = new int[originalArray.length-1];
System.arraycopy(originalArray, 0, newArray, 0, i);
System.arraycopy(originalArray, i+1, newArray, i, originalArray.length-i-1);
return newArray;
}
}
return originalArray;
}
}