博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java对链表的操作
阅读量:5771 次
发布时间:2019-06-18

本文共 1967 字,大约阅读时间需要 6 分钟。

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);
 }
}

本文转自蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366793,如需转载请自行联系原作者

你可能感兴趣的文章
[转载]ASP.NET MVC Music Store教程(1):概述和新项目
查看>>
Android 最简单的自定义Dialog之一
查看>>
redux v3.7.2源码解读与学习之 applyMiddleware
查看>>
Git原理与高级使用(3)
查看>>
从JDK源码看Writer
查看>>
Express 结合 Webpack 实现HMRwi
查看>>
基于protobuf的RPC实现
查看>>
HAProxy负载均衡原理及企业级实例部署haproxy集群
查看>>
Win 8创造颠覆性体验:预览版关键更新
查看>>
JS中比较数字大小
查看>>
jQuery插件的开发
查看>>
基础,基础,还是基础之JAVA基础
查看>>
如何成为一个C++高级程序员
查看>>
我的友情链接
查看>>
显式锁(第十三章)
查看>>
看linux书籍做的一些重要笔记(2011.07.03更新)
查看>>
CString、Char* ,char [20]、wchar_t、unsigned short转化
查看>>
从案例学RxAndroid开发(上)
查看>>
Redis学习手册(内存优化)
查看>>
浅尝TensorFlow on Kubernetes
查看>>