可以直接赋值的,因为你的ListNode的成员变量都是default权限即包内访问的,只要你的ListNode和Solution类在同一个包里面就可以了。
你的删除方法有问题,先要查找到待删除节点,然后再删除。修正你的Solution代码如下:
public class Solution {
public void deleteNode(ListNode list,ListNode node) {
//空链表
if(node==null||list==null||list.getNext()==null){
return ;
}
//查找node节点
ListNode curNode = list;
ListNode preNode = null;
ListNode next = list.next;
while(curNode!=null){
if(curNode.val==node.val){//找到
System.out.println("找到待删除对象了。"+node.val);
break;
}
preNode = curNode;
curNode = next;
next = next.next;
}
//删除node节点
if(preNode==null){
//第一个元素删除操作直接修正list为next:curNode-next
list = next;
}else{
//删除中间节点中间:preNode-curNode-next
preNode.next = next;
}
}
public void printListNode(ListNode list){
ListNode node = list;
while(node!=null){
System.out.println(node.val);
node = node.next;
}
}
public static void main(String[] args) {
ListNode n1 = new ListNode(1);
ListNode n2 = new ListNode(2);
ListNode n3 = new ListNode(3);
ListNode n4 = new ListNode(4);
n1.setNext(n2);
n2.setNext(n3);
n3.setNext(n4);
n4.setNext(null);
Solution s = new Solution();
s.printListNode(n1);
s.deleteNode(n1, n3);
s.printListNode(n1);
}
}
Ok,测试结果
1
2
3
4
找到待删除对象了。3
1
2
4