Java对链表的操作

简介: class LinkList {  private class Node//创建节点类  {   public Object item;   public Node   next;  }  private Node head;  priva...


class LinkList
{
 private class Node//创建节点类
 {
  public Object item;
  public Node   next;
 }

 private Node head;
 private Node slider;
 private int  count;

 public LinkList()//构造方法
 {
  clear();
 }

 public void clear()//清空链表
 {
  head   = null;
  slider = null;
  count  = 0;
 }

 public boolean isEmpty()//判断链表是否为空
 {
  return head==null;
 }

 public void gotoFirst()//指向链表的头结点
 {
  slider = head;
 }

 public Object nextItem()//插入数据
 {
  if(slider==null)
  {
   return null;
  }

  Object o = slider.item;

  slider = slider.next;

  return o;
 }

 public Object getFirst()
 {
  return head.item;
 }

 public Object getAt(int index)
 {
  if(index<0 || index>=count)
  {
   return null;
  }

  Node g  = head;

  for(int i=0; i<index; i++)
  {
   g  = g.next;
  }

  return g.item;

 }

 public void addAt(Object item,int index)
 {
  Node g  = head;
  Node ag = head;

  if(index<0)
  {
   addFirst(item);
  }
  else
   if(index>=count)
  {
   addLast(item);
  }
  else
  {
   for(int i=0; i<index; i++)
   {
    if(g==ag)
    {
     g  = g.next;
    }
    else
    {
     ag = g;
     g  = g.next;
    }
   }

   if(index==0)
   {
    head      = new Node();
    head.item = item;
    head.next = g;
   }
   else
   {
    ag         = new Node();
    ag.item    = item;
    ag.next    = g;
   }

   count++;
  }
 }

 public Object removeAt(int index)
 {
  if(index<0 || index>=count)
  {
   return null;
  }

  Node g  = head;
  Node ag = head;

  for(int i=0; i<index; i++)
  {
   if(g==ag)
   {
    g  = g.next;
   }
   else
   {
    ag = g;
    g  = g.next;
   }
  }

  if(index==0)
  {
   head = head.next;
  }
  else
  {
   ag.next = g.next;
  }

  count--;

  return g.item;
 }

 public void addFirst(Object item)
 {
  Node g    = head;

  head      = new Node();
  head.item = item;
  head.next = g;

  count++;
 }

 public void addLast(Object item)
 {
  if(head==null)
  {
   head      = new Node();
   head.next = null;
   head.item = item;
  }
  else
  {
   Node s = head;

   for(int i=0; i<count; i++)
   {
    if(s.next == null)
    {
     break;
    }

    s = s.next;
   }


   s.next = new Node();
   s      = s.next;
   s.next = null;
   s.item = item;
  }

  count++;
 }

 public int length()
 {
  return count;
 }

 public Object removeFirst()
 {
  return removeAt(0);
 }

 public Object removeLast()
 {
  return removeAt(count-1);
 }
}

相关文章
|
2月前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
29 6
|
6月前
|
存储 Java 索引
【Java】LinkedList vs. ArrayList:Java中的数据结构选择
【Java】LinkedList vs. ArrayList:Java中的数据结构选择
31 3
|
7月前
|
存储 安全 Java
Java顺序表解析与应用
Java顺序表解析与应用
|
6月前
|
Java 数据处理 索引
JAVA中的插入操作:深入解析与实现
JAVA中的插入操作:深入解析与实现
87 1
|
6月前
|
存储 Java
Java 链接表(链表)详解与实现
Java 链接表(链表)详解与实现
74 2
|
6月前
|
Java
数组链表(java)
数组链表(java)
|
7月前
|
存储 缓存 Java
Java中的链表
Java中的链表
29 0
|
7月前
|
存储 Java
Java 实现双链表
Java 实现双链表
27 0
|
7月前
|
存储 Java
Java 实现单链表
Java 实现单链表
37 0
|
7月前
|
存储 Java
Java链表
Java链表
32 0