//含有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. 优化 从Draw Calls到GC

    原文出处: 慕容小匹夫的博客(@慕容小匹夫)   欢迎分享原创到伯乐头条 前言: 刚开始写这篇文章的时候选了一个很土的题目...<Unity3D优化全解析>.因为这是一篇临时起意才写的文章 ...

  2. asp.net LINQ防止SQL注入式攻击

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  3. Python第一模块

    一.Python简介 二.Python种类 三.Python环境  windows: 1.需要配置环境变量 2.更新:卸载重装 linux:1.常用命令: 查看默认Python版本 Python -V ...

  4. Android Runtime

    [Android Runtime] Every Android application runs in its own process, with its own instance of the Da ...

  5. css3、html5学习笔记

    2016/12/14 ----认真看完绝对对你有帮助 HTML5针对移动端,移动端的浏览器主要是chrome,是webkit内核; app(applicatin):应用; native app:原生的 ...

  6. js中的原形链问题

    ---恢复内容开始--- 一.在js中大家讨论的原形链都是围绕在prototype和__proto__. 1.__proto__是内部原型 2.prototype是构造器原型(构造器就是构造函数) 3 ...

  7. javascript的数值转换

    在javascript中数值转换,最要的一点是函数第一个字母必须要大写.js中的函数有string字符型.number数值型.null空型.boolean布尔型.undefined未定义. 具体的转换 ...

  8. HTTP Error 503. The service is unavailable

    网站运行一段时间后,突然所有的页面都报告以下错误: HTTP Error 503. The service is unavailable 经检查,应用程序池自动停止,可能是工作进程抛出的异常数超出限制 ...

  9. @RequestMapping(value = "{adminPath}")

  10. 纯css来画图-border应用

    基础知识: Css画图大部分是使用了css中的border来绘画图形,那首先我们就来看下border的基础知识,至于其他的遇到了再讲吧! Border的基础知识: 一般我们这样简写: border: ...