`
zcb11051
  • 浏览: 8719 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

java链表

阅读更多
public class Node<T> 
{
	T data;
	Node<T> next;
	
	
	public Node(T data)
	{
		this.data=data;
		next=null;
	}
	
}

class LinkedList<T>
{
	Node<T> head;
	int size;
	
	LinkedList()
	{
		head=null;
		size=0;
	}
	
	public void insert(T data)
	{
		Node<T> p=head;
		Node<T> node=new Node<T>(data);
		if(head==null)
		{
			head=node;
		}
		else
		{
			while(p.next!=null)
			{
				p=p.next;
			}
			p.next=node;
		}
		size++;
	}
	
	public void insertAfter(int index,T data)
	{
		Node<T> p=head;
		Node<T> q=p.next;
		Node<T> node=new Node<T>(data);
		int j=0;
		if(head==null)
		{
			head=node;
		}
		else
		{
			while(p!=null&&j<index)
			{
				j++;
				p=p.next;
				q=q.next;
			}
			p.next=node;
			node.next=q;
		}
		
		
	}
	
	
	
	public void remove(T data)
	{
		Node<T> p=head;
		Node<T> q=p.next;
		if(head.data==data)//头结点
		{
			head=head.next;
			size--;
		}
		else//不是头结点
		{
			//循环查找
			while(p.next!=null)
			{
				if(q.data==data)//当前结点的下一个节点指向data数据有
				{
					p.next=q.next;
					size--;
					break;
				}
				p=p.next;
				q=q.next;
			}
			
		}
	}
	
	//根据下标获取这个对象
	public T get(int index)
	{
		Node<T> p=head;
		if(head!=null&&index>=0)
		{
			int j=0;
			while(p!=null&j<index)
			{
				j++;
				p=p.next;
			}
			if(p!=null)
			{
				return (T) p.data;
			}
		}
		return null;
	}
	
	//根据下标获取这个对象
	public void update(int index,T data)
	{
		Node<T> p=head;
		if(head!=null&&index>=0)
		{
			int j=0;
			while(p!=null&j<index)
			{
				j++;
				p=p.next;
			}
			if(p!=null)
			{
				p.data=data;
			}
		}
	}
	
	//显示链表全部信息
	public void showLink()
	{
		Node<T> node=head;
		while(node!=null)
		{
			System.out.print(node.data+" ");
			node=node.next;
		}
		System.out.println();
	}
	
	public boolean isEmpty()
	{
		return size==0;
	}
	public void clear()
	{
		head=null;
	}
}
public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		LinkedList<Integer> linkedList=new LinkedList<Integer>();
		for(int i=0;i<10;i++)
		{
			linkedList.insert(i);
		}
		
		linkedList.insertAfter(0,99);
		linkedList.showLink();
		linkedList.remove(99);
		linkedList.showLink();
		linkedList.update(1, 88);
		linkedList.showLink();
		
	}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics