码迷,mamicode.com
首页 > 编程语言 > 详细

Java实现单向链表的增删改查

时间:2016-06-09 14:44:14      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:

class Node
{
    public int val;
    public Node next;

    public Node(int val)
    {
        this.val = val;
    }
}


class ListHead
{
    public int count ;
    public Node next;

    public ListHead()
    {
        this.count = 0;
        this.next = null;
    }
}


class List
{
    public ListHead head;
    private Node current;

    public List()
    {
        this.head = new ListHead();
        this.current = null;
    }

    public void addNew(int val)
    {
        Node newNode = new Node(val);
        if(this.head.next == null)
            this.head.next = newNode;
        else
            this.current.next = newNode;

        this.current = newNode;
    }

    public boolean contains(int val)
    {
        for(Node current = this.head.next; current != null; current = current.next)
        {
            if(current.val == val)
                return true;
        }


        return false;
    }

    public void replace(int val,int newVal)
    {
        for(Node current = this.head.next; current != null; current = current.next)
        {
            if(current.val == val)
            {
                current.val = newVal;
                return;
            }
        }
    }

    public void replaceAll(int val, int newVal)
    { 
        for(Node current = this.head.next; current != null; current = current.next)
        {
            if(current.val == val)
                current.val = newVal;
        }
    }

    public void remove(int val)
    {
        Node theOneToBeRemoved = null;
        if(this.head.next != null && this.head.next.val == val)
        {
            theOneToBeRemoved = this.head.next;
            this.head.next = theOneToBeRemoved.next;
            theOneToBeRemoved.next = null;
            return ;
        }

        for(Node current = this.head.next; current != null; current = current.next)
        {
            if(current.next != null && current.next.val == val )
            {
                theOneToBeRemoved = current.next;
                current.next = theOneToBeRemoved.next;
                theOneToBeRemoved.next = null;
                return;
            }
        }
    }



    public void removeAll(int val)
    {
        Node theOneToBeRemoved = null;
        while(this.head.next != null && this.head.next.val == val)
        {
            theOneToBeRemoved = this.head.next;
            this.head.next = theOneToBeRemoved.next;
            theOneToBeRemoved.next = null;
        }


        for(Node current = this.head.next; current != null; current = current.next)
        {
            while(current.next != null && current.next.val == val)
            {
                theOneToBeRemoved = current.next;
                current.next = theOneToBeRemoved.next;
                theOneToBeRemoved.next = null;
            }
        }
    }

    public void clear()
    {
        Node theOneToBeRemoved = null;
        while(this.head.next != null)
        {
            theOneToBeRemoved = this.head.next;
            this.head.next = theOneToBeRemoved.next;
            theOneToBeRemoved.next = null;
        }
    }

    public void printList()
    {
        for(Node current = this.head.next; current != null; current = current.next)
        {
            System.out.print(current.val + " ");
        }

        System.out.println("\n=================================");
    }


}

public class  Hello
{ 
    public static void main(String[] args) 
    {
        List myList = new List();

        myList.addNew(1);
        myList.addNew(1);
        myList.addNew(1);
        myList.addNew(1);
        myList.addNew(1);
        myList.addNew(2);
        myList.addNew(1);
        myList.addNew(2);
        myList.addNew(1);
        myList.addNew(2);
        myList.addNew(7);
        myList.addNew(7);
        myList.addNew(8);
        myList.addNew(2);

        myList.printList();
        myList.replaceAll(2,9);
        myList.removeAll(7);
        
        myList.printList();
    } 
}

 

Java实现单向链表的增删改查

标签:

原文地址:http://www.cnblogs.com/kuillldan/p/5572262.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!