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;
}
}
简单链表
最新推荐文章于 2024-04-19 15:40:31 发布