单链表java实现

Posted jesh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表java实现相关的知识,希望对你有一定的参考价值。

单链表java实现,基础的东西不能忘记哦。这些都是大学的时候经常考试的

package dataStructure;

import java.util.HashMap;

/**
 * @author JESH
 *
 * @param <T>
 */
public class LinkList<T> {
    
    private  final Node<T> head;

    public LinkList()
    {
        head = new Node<T>(null);
    }
    
    public void addNode(T data)
    {
        Node<T> n = new Node<T>(data);
        Node<T> tmp = head;
        while(tmp.getNext()!=null)
        {
            tmp = tmp.getNext();
        }
        tmp.setNext(n);
    }
    
    public T getData(int index)
    {
        if(index <0)
        {
            return null;
        }
        int i = 0;
        Node<T> tmp = head;
        while(tmp.getNext() != null)
        {
            if(i++ == index)
            {
                return (T) tmp.data;
            }
            tmp = tmp.getNext();
        }
        if(i == index)
        {
            return (T) tmp.data;
        }
        return null;
    }
    
    
    public boolean delNode(T data)
    {
        if(data ==null)
            return false;
        Node tmp  = head;
        while(tmp.getNext() != null)
        {
            if(tmp.getNext().data.equals(data))
            {
                tmp.setNext(tmp.getNext().getNext());
                return true;
            }
            tmp = tmp.getNext();
        }
        return false;
            
    }
    
    public String toString()
    {
        StringBuffer sb = new StringBuffer();
        Node t= head;
        sb.append("head:" + t.data);
        while(t.getNext()!=null)
        {
            t = t.getNext();
            sb.append("-->").append("node:"+t.data.toString());
        }
        sb.append("-->null");
        return sb.toString();
    }
    
    
    private class Node<T>
    {
        T data;
        private Node next = null;
        
        public Node(T data)
        {
            this.data = data;
        }

        public Node getNext() {
            return next;
        }

        public void setNext(Node next) {
            this.next = next;
        }
    }

    public static void main(String[] args)
    {
        LinkList<Integer> ll = new LinkList<Integer>();
        for(int i = 0;i<100;i++)
        {
            ll.addNode(i);
        }
        for(int j =0;j<108;j++)
        {
            System.out.println(ll.getData(j));
        }
        for(int j =0;j<108;j++)
        {
            if(j%3==0)
            {
                ll.delNode(j);
            }
        }
        
        System.out.println(ll);
        
        LinkList<HashMap<String,String>> l2 = new LinkList<HashMap<String,String>>();
        System.out.println(l2);
        HashMap m = new HashMap<String,String>();
        m.put("1", "1");
        l2.addNode(m);
        System.out.println(m);
        System.out.println(l2);
        System.out.println(l2.getData(0));
        System.out.println(l2.getData(1));
        System.out.println(l2.getData(2));
        System.out.println(l2.getData(4));
        System.out.println(l2.getData(5));
        l2.delNode(m);
        System.out.println(l2);    
    }
    
}

 

以上是关于单链表java实现的主要内容,如果未能解决你的问题,请参考以下文章

java数据结构:单链表常见操作代码实现

Java 数据结构——单链表面试题

JAVA实现: 使用单链表实现约瑟夫环(约瑟夫问题)

Java 数据结构——单链表面试题

(java实现)单链表

Java单链表双端链表有序链表实现