java单链表删除所有指定元素


class Node{
    public String data;
    public Node next = null;
}

public class Main {

    public static Node listRemove(Node head, String s){
        // 头节点删除
        if (s.equals(head.data)) return head.next;

        Node pre = head;
        Node headTmp = head;

        while (head != null){
            if (s.equals(head.data)){
                pre.next = head.next;
                head = pre.next;
            }else{
                pre = head;
                head = head.next;
            }
        }
        System.out.println(headTmp.data);
        return headTmp;
    }

    public static void main(String[] args) {

        Node n1 = new Node();
        n1.data="a";

        Node n2 = new Node();
        n2.data="c";

        Node n3 = new Node();
        n3.data="c";

        Node n4 = new Node();
        n4.data="d";

        n1.next=n2;
        n2.next=n3;
        n3.next=n4;

        Node newList = listRemove(n1, "a");  // 链表头删除
//        Node newList = listRemove(n1, "c");   // 链表中删除
//        Node newList = listRemove(n1, "d");   // 链表尾删除
        
        System.out.println(newList.data);
    }
}

你可能感兴趣的:(算法)