简单链表


package second;

import java.util.Scanner;

public class LinkList
{
	public static void main(String[] args) throws Exception
	{
		LinkList ll=new LinkList();
		ll.create();	//创建节点
		ll.show(ll);	//显示节点
		ll.insert(5, 6);//增加节点
		ll.show(ll);
		ll.remove(0);	//删除节点
		ll.show(ll);
		ll.alter(0, 100);//修改节点
		ll.show(ll);
		System.out.println(ll.get(1));//查询节点
	}
	public Node head;
	public LinkList()
	{
		head=new Node();
	}
	//创建节点
	public void create() throws Exception
	{
		int n=5;
		for(int j=0;j<n;j++)
			{
				insert(length(),j+1);
			}
	}
	//显示节点
	public void show(LinkList ll)
	{
		Node n=ll.head.next;
		for(int x=0;x<length();x++)
		{
			System.out.print(n.data+"  ");
			n=n.next;
		}
		System.out.println();
	}
	//增加节点
	public void insert(int i,Object x) throws Exception
	{
		int j=-1;
		Node p=head;
		while(j<i-1&&p!=null)
		{
			p=p.next;j++;
		}
		if(j>i-1||p==null)
		{
			throw new  Exception("不存在的");
		}
		else
		{
			Node n=new Node(x);
			n.next=p.next;
			p.next=n;
		}
	}
	//删除链接点
	public void remove(int i) throws Exception
	{
		Node p=head;
		int j=-1;
		while(p.next!=null&&j<i-1)
		{
			p=p.next;
			j++;
		}
		if(j>i-1||p.next==null)
		{
			throw new Exception("不存在的");
		}
		p.next=p.next.next;
	}
	//修改链接点
	public void alter(int i,Object x) throws Exception
	{
		Node p=head.next;
		int j=0;
		while(p!=null&&j<i)
		{
			p=p.next;
			j++;
		}
		if(j>i||p==null)
		{
			throw new  Exception("不存在");
		}
		p.data=x;
	}
	
	
	public void clear()
	{
		head.data=null;
		head.next=null;
	}
	
	
	public boolean idEmpty()
	{
		return head.next==null;
	}
	
	
	public int length()
	{
		Node p=head.next;
		int length=0;
		while(p!=null)
		{
			p=p.next;
			length++;
		}
		return length;
	}
	//用位置去查询节点
	public Object get(int i) throws Exception
	{
		Node p=head.next;
		int j=0;
		while(p!=null&&j<i)
		{
			p=p.next;
			j++;
		}
		if(j>i||p==null)
		{
			throw new  Exception("不存在");
		}
		return p.data;
	}
	//用值去查询链表,没有就返回-1
	public int indexof(Object x)
	{
		Node p=head.next;
		int j=0;
		while(p!=null&& !p.data.equals(x))
		{
			p=p.next;
			j++;
		}
		if(p!=null)
		{
			return j;
		}
		else
		{
			return -1;
		}
	}
//	public LinkList(int n,boolean order) throws Exception
//	{
//		this();
//		if(order)
//		{
//			create1(n);
//		}
//		else
//		{
//			create2(n);
//		}
//		
//	}
//	public void create2(int n) throws Exception
//	{
//		Scanner in=new Scanner(System.in);
//		for(int j=0;j<n;j++)
//		{
//			insert(0, in.next());
//		}
//	}
//	public void create1(int n) throws Exception
//	{
//		Scanner in=new Scanner(System.in);
//		for(int j=0;j<n;j++)
//		{
//			insert(length(), in.next());
//		}
//	}

}
class Node<T>
{
	public T data;
	public Node next;
	public Node()
	{
		this(null,null);
	}
	
	public Node(T data)
	{
		super();
		this.data = data;
	}

	public Node(T data, Node next)
	{
		this.data = data;
		this.next = next;
	}
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ReflectMirroring

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值