//含有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. linux+php+apache web调用python脚本权限问题

    lamp : linux + apache + mysql + php 在近期项目中使用 linux + apache + php调用python脚本是出现以下权限问题: build/bdist.li ...

  2. shell 统计某个文件的行数命令

    语法:wc [选项] 文件- 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同时也给出所有指定文件的总统计数.字是由空格字符区分开的最大字符串. 该命令各选 ...

  3. c++ 别名

    #include <iostream> int main() { ; // 别名 int &ref = i; std::cout << &i << ...

  4. Struts框架——(一)用Servlet + JSP演示Struts基本原理

    一. 用Servlet + JSP演示Struts基本原理 struts是开源项目.它通过采用 Java Servlet/JSP 技术,实现了基于Java EE Web应用的MVC的应用框架.Stru ...

  5. 一般html5 手机端头部需要

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  6. 控制反转IOC与依赖注入DI

    理解 IOC  http://www.cnblogs.com/zhangchenliang/archive/2013/01/08/2850970.html IOC 相关实例      的http:// ...

  7. highcharts曲线图

    在做项目时,用highcharts做过曲线图,X轴是从后台获取的时间数据,Y轴是从后台获取的Int型数据 1.我的后台数据封装成json格式,数据较多,展示部分数据 2.曲线图的展示 3.前端jsp页 ...

  8. Eclipse 配置 pyDev(转)

    转自:http://www.51testing.com/html/75/534775-859092.html 很久没有接触到Python了.以前都是在用2.7版本的,这次索性就安装3.2的了.一般的小 ...

  9. Linux下SVN客户端安装及使用

    转载自:http://www.linuxidc.com/Linux/2015-01/111748.htm 不想自己写了,这个写的挺全的,我就按这个步骤走的,呵呵 非常感谢作者 环境说明: 系统版本:C ...

  10. 我 && symfony3 (路由)

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Helvetica Neue"; color: #323333 } p. ...