删除指定的值,或者根据stack来实现删除节点我并没有写。
package com.sun.myapplication; /** * Created by sunxin on 2017/9/10. */ public class StackUtils { public class Node{ int data; Node next; public Node( int data) { this.data=data; } } //删除单链表中指定的节点 public static void deleteNode(Node head,Node node){ //删除尾节点采用顺序查找尾部节点的,这里head节点不能为null我就不加判断了 //这里我们先判断尾节点是不是null,然后通过循环来查找尾节点的上一个节点 //这里的while条件意思是,如果上一节点的子节点不等于尾节点,我们就无限将子节点赋值为父节点,然后查找到 //当上一节点的子节点等于尾节点的时候我们就跳出循环,此时我们已经找到尾节点的上一节点 //我们将找到的尾节点额上一个节点的next变null,此时我们就删除了尾节点 if (node.next==null){ while (head.next!=node){ head=head.next; } head.next=null; } //删除头节点 //这里比较简单我们直接判断是不是头节点,如果是就直接null else if(head==node){ head=null; } //这里是普通节点 //单链表 删除节点就头 尾 普通 三种判断 else{ //其实删除的普通节点就是轮作,就是将我要删除的节点的下一节点替换到当前要删除的节点 //从而使当前节点被他的子节点替换掉。绳子断了我们用剩下的接上一样的道理 Node a=node.next;//获得子 node.data=a.data;//替换 node.next=a.next;//替换 } } }