//含有rear,尾插时时O(1)的复杂度
package linearList;
//凡是实现后插后删都比较容易,尽量向着这个方向转换
public  class linearList {
      class node {
     private  int data;
     private  node next;
     public node(int data,node next){
      this.data=data;
      this.next=next;}
     }
    private node head;
    private node rear;//两个引用,指向空
    private  int length=0;
    public linearList(){
      head=new node(0,null);
      rear=head;
     }
    void addfirst(int data)//头插
    {if(head.next==null){
      node n=new node(data,null);
      head.next=n; rear=n;length++;}
     else {node n=new node(data,head.next);head.next=n;length++;}}
    void addlast(int data)//尾插
    {node n=new node(data,null);
     rear.next=n;
     rear=n;length++;}
    void addafter(node n,int data)//后插
    {node n1=n.next;
    if(n1==null){
     node n2=new node(data,null);
    n.next=n2;rear=n2;length++;
    }
    else{
     node n2=new node(data,n.next);
     n.next=n2;length++;
    }
    } 
    void addbefore(node n,int data)//前插
    {addafter(n,n.data);
    n.data=data;//没有length++;
    }
    int removefirst()//头删
    {if(head.next ==null){return 0;}
    if(head.next==rear){
    int data=rear.data;
    head.next=null;
    rear=head;length--; return data;}
    int data=head.next.data;
    head.next=head.next.next;length--; 
    return data;
    }
    int removelast()//尾删
    {node n=head;int data=rear.data;
     while(n!=null){
      if(n.next.equals(rear))
      {n.next=null;rear=n;}
      n=n.next;
     }length--; 
     return data;
    }
   
    int removeafter(node n)//后删
    {if(n.next==null)return 0;
     node n1=n.next;int data=n1.data; 
     if(n1.next==null){
      n.next =null;
      rear=n;}
     n.next=n1.next;
     length--; 
     return data;}
    int removebefore(node n)//前删
    {node n1=head.next;
    if(n1==n)return 0;
     while(n1!=null){
      if(n1.next.next.equals(n)){
       return removeafter(n1);}//遇到第一个满足条件的节点便跳出
      n1=n1.next;
     }//没有length--;
     return 0;
    }
    int ofdex(int data)//找序
    {node n=head;int i=0;
     while(n!=null){
      if(n.data==data)break;
      n=n.next;i++;
     }
        return i;
    }
    boolean Isempty()//判空
    {if(head.next==null)
     return true;
    return false;}
   
    int contains(int data)//判含
    {node n=head;
    while(n!=null){
     if(n.data==data)return 1;
     n=n.next;
    }
    return -1; 
    }
 node find(int data)//找节点
 {node n=head;
 while(n!=null){
  if(n.data==data)return n;
 n=n.next;
 }
 return null;
 }
 public void clear()//清空
 {head.next=null;
 rear=head; length=0;
 }
 int size()//链表长度
    {return length;}
 void traverse()//遍历
 {if(head.next==null){System.out.println("该链表为空");return;}
 node n=head.next;
 for(int i=0;i<length;i++){
 System.out.println(n.data);
 n=n.next;
 }
 }

LinkList(JAVA版,contain rear)的更多相关文章

  1. ArcGIS Server 10 Java 版的Rest服务手动配置方法

    Java版的Manager中发布的服务默认只发布了该服务的SOAP接口,而REST接口需要用户在信息服务器,如Tomcat. Apache.WebLogic等中手工配置.由于在Java版的Server ...

  2. PetaPojo —— JAVA版的PetaPoco

    背景 由于工作的一些原因,需要从C#转成JAVA.之前PetaPoco用得真是非常舒服,在学习JAVA的过程中熟悉了一下JAVA的数据组件: MyBatis 非常流行,代码生成也很成熟,性能也很好.但 ...

  3. 【转载】java版打字练习软件

    网上找到一个java版的打字的游戏 import java.applet.Applet; import java.applet.AudioClip; import java.awt.Dimension ...

  4. 微博地址url(id)与mid的相互转换 Java版

    原理: 新浪微博的URL都是如:http://weibo.com/2480531040/z8ElgBLeQ这样三部分. 第一部分(绿色部分)为新浪微博的域名,第二部分(红色部分)为博主Uid,第三部分 ...

  5. JCEF3——谷歌浏览器内核Java版实现(一):使用jawt获取窗体句柄

    前言 最近一段时间研究谷歌浏览器内核.谷歌浏览器内核一直开源,并维护更新,它的开源项目中内核更新速度和Chrome浏览器版本更新进度一样!而且它不同于WebKit(值得一题的是谷歌浏览器已不使用Web ...

  6. Selenium关键字驱动测试框架Demo(Java版)

    Selenium关键字驱动测试框架Demo(Java版)http://www.docin.com/p-803493675.html

  7. 第九篇 :微信公众平台开发实战Java版之如何实现自定义分享内容

    第一部分:微信JS-SDK介绍 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统 ...

  8. 第八篇 :微信公众平台开发实战Java版之如何网页授权获取用户基本信息

    第一部分:微信授权获取基本信息的介绍 我们首先来看看官方的文档怎么说: 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域 ...

  9. 第七篇 :微信公众平台开发实战Java版之如何获取微信用户基本信息

    在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的openid不同). 公众号可通过本接口来根据O ...

随机推荐

  1. 15.6.2 Configuring the Merge Threshold for index pages[innodb]

    MERGE THRESHOLD 提供了可以合并相邻索引page的功能. 默认值是50 如果一个页中数据被删除或者更新减小,导致页中有空白部分,空白部分接近合并门槛的值,则会和相邻页合并, 但是两个pa ...

  2. C#窗体文件的操作

    文件的创建使用File类下的AppendAllText("要保存的数据","文件完整路径")方法. string fileMove = @"C:\te ...

  3. Spring JDBC

    转载:博客主页:http://blog.csdn.NET/chszs 一.概述 在Spring JDBC模块中,所有的类可以被分到四个单独的包:1)core即核心包,它包含了JDBC的核心功能.此包内 ...

  4. 在使用dot。js中的值中有空格出现后,进行去除

    title= {{= x.replace(/ /g,' ') 通过replace将数据进行处理再展示

  5. Java基础知识系列——String

    最近晚上没有什么事(主要是不加班有单身),就复习了一下Java的基础知识.我复习Java基础知识主要是依据Java API和The Java™ Tutorials. 今天是第一篇,复习了一下Strin ...

  6. Appium移动自动化测试之问题总结

    1.运行该测试用例,报如下错误 java.lang.NoSuchMethodError: org.openqa.selenium.remote.ErrorHandler.<init>(Lo ...

  7. ztree插件的使用

    在bootstrap中使用ztree插件做树形架构,由于觉得原始的树形不够美观,所以改了其中的css插件 demo演示,以及各种属性的用法网站:  http://www.treejs.cn/v3/de ...

  8. C++读写文件ofstream,ifstream,fstream)[转]

    在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream的内容:[ ...

  9. js切换不同的div的颜色

    四个div,点击一个变色,其他的不变色,效果如图: 代码如下 : <!DOCTYPE html> <html> <head> <script> wind ...

  10. Eclipse 在ubuntu桌面显示快捷启动以及解决Eclipse 在ubuntu中点击菜单栏不起作用的原因.

    要在Eclipse中设置好之后,可以通过如下方式在周末显示快捷启动以及解决Eclipse在ubuntu高版本中点击菜单栏项不显示列表的问题 在usr/share/app-install/desktop ...