public class SJBLinkedList{

private Node first;

private Node last;

private int size;

public int size(){

return size;

}

public boolean isEmpty(){

return size == 0;

}

public void add(Object obj){

Node node = new Node();

if(first == null){

node.obj = obj;

node.previous = null;

node.next = null;

first = node;

last = node;

}else{

node.obj = obj;

node.previous = last;

node.next = null;

last.next = node;

last = node;

}

size++;

}

private Node getNode(int index){

if(index < 0 || index >size ){

try {

throw new Exception();

} catch (Exception e) {

e.printStackTrace();

System.exit(0);

}

}

Node temp = null;

if(first != null){

temp = first;

for (int i=0;i<index;i++){

temp = temp.next;

}

}

return temp;

}

public Object get(int index){

return getNode(index).obj;

}

public void remove(int index){

if(index < 0 || index >size ){

try {

throw new Exception();

} catch (Exception e) {

e.printStackTrace();

System.exit(0);

}

}

Node currentNode = getNode(index);

Node upNode = currentNode.previous;

Node downNode = currentNode.next;

upNode.next = downNode;

downNode.previous = upNode;

size--;

}

private class Node{

private Node previous;

private Object obj;

private Node next;

public Node(Node previous,Node next,Object obj){

this.previous = previous;

this.obj = obj;

this.next = next;

}

public Node(){

}

public Node getPrevious() {

return previous;

}

public void setPrevious(Node previous) {

this.previous = previous;

}

public Object getObj() {

return obj;

}

public void setObj(Object obj) {

this.obj = obj;

}

public Node getNext() {

return next;

}

public void setNext(Node next) {

this.next = next;

}

}

public static void main(String[] args){

SJBLinkedList list = new SJBLinkedList();

list.add("123");

list.add("234");

list.add("345");

for(int i=0;i<3;i++){

System.out.println(list.get(i));

}

//System.out.println(list.get(5));

}

}

java 用双向链表实现SJBLinkedList的更多相关文章

  1. JAVA实现双向链表的增删功能

    JAVA实现双向链表的增删功能,完整代码 package linked; class LinkedTable{ } public class LinkedTableTest { //构造单链表 sta ...

  2. Java简单双向链表实现 @version 1.0

    package com.list; /** * 数据结构和算法Java表示 双向链表 * * @version 1.0 * @author 小明 * */ public class MyDoublel ...

  3. JAVA单向/双向链表的实现

    一.JAVA单向链表的操作(增加节点.查找节点.删除节点) class Link { // 链表类 class Node { // 保存每一个节点,此处为了方便直接定义成内部类 private Str ...

  4. 大话数据结构(八)Java程序——双向链表的实现

    线性链表--双向链表 双向链表定义: 双向链表(double linked list): 是在单表单的每个结点中,再设置一个指向前驱结点的指针域.因此,在双向链表中的结点都有两个指针域,一个指向前驱, ...

  5. Java中双向链表的代码实现

    写在前面: 双向链表是一种对称结构,它克服了单链表上指针单向性的缺点,其中每一个节点即可向前引用,也可向后引用,这样可以更方便的插入.删除数据元素. 由于双向链表需要同时维护两个方向的指针,因此添加节 ...

  6. Java数据结构--双向链表的实现

    #java学习经验总结------双向链表的实现 双向链表的建立与单链表类似,只是需要使用pre指针指向前一个结点,并且在删除添加时不仅仅考虑next package datastructure; p ...

  7. Java数据结构——双向链表

    //================================================= // File Name : DoublyLinked_demo //------------- ...

  8. java实现双向链表

    PS:双向链表(每个节点含有指向前一个节点的前驱与后一个节点的后继) public class DoublyLinkedList { static class Node { private Objec ...

  9. Java:双向链表反转实现

    有个小需求要求实现一个双向链表的反转于是就有了下边代码: 链表元素结构定义: package com.util; public class LinkedNode<T>{ private T ...

随机推荐

  1. 六、spark常见问题总结(转载)

    问题导读 1.当前集群的可用资源不能满足应用程序的需求,怎么解决? 2.内存里堆的东西太多了,有什么好办法吗?         1.WARN TaskSchedulerImpl: Initial jo ...

  2. python 2.7 字符串处理

    python 2 字符串处理小结: 字符替换:new_str = old_str.replace(char_old, char_new)--可用于清除字符串中所有的空格 字符分割(正/反):str_n ...

  3. 《Hexo+github搭建个人博客》

    <Hexo+github搭建个人博客> 文/冯皓林 完稿:2016.4.22-2016.4.23 注意:本节教程只针对Windows用户.本教程由无人赞助,赞助写出. <Hexo+g ...

  4. GTK+2.0学习——code::block使用

    在之后使用中会慢慢去完善~~ 一.编码设置 1.设置文件编码:setting->editor->如图 2.设置编译时的编码(记住二者要统一):setting->compiler-&g ...

  5. html+css基础篇

    2016年11月19号,计划把基础在看一下,听大神说好的东西就要多看几遍,知识是学来用的解决问题的,加油 接下来的是我在自学中的小笔记吧,每天都在保持几个小时的学习思考状态,由于要升本所以学前端的时间 ...

  6. SystemInfo获取设备系统参数

    using UnityEngine; using System.Collections; using System.Collections.Generic; publicclassGameContro ...

  7. HDU 5873 Football Games

    随便判了几个条件就过了,也不知道对不对的. 正解应该是: $[1].$${s_1} + {s_2} + {s_3} + ...... + {s_n} = n(n - 1)$ $[2].$${s_1} ...

  8. [HMLY]6.iOS Xcode全面剖析

    一.创建一个新工程 1.第一步打开Xcode,找到Xcode程序图标并点击 2.如下界面,我们点击新建一个项目,即第二项 (1).Get started with a playground playg ...

  9. Linq 内联左联等

    我们在做SQL查询的时候经常会用到Inner Join,Left Join,笛卡尔积等等,连接方式的概念方面我想也不用给予太多解释, 我们今天的重点是让大家熟悉LINQ是如何使用Join来实现常用的表 ...

  10. tomcat服务配置及搭建

    一.在官网上下载tomcat 下载地址:http://tomcat.apache.org/download-60.cgi 下载完后解压 二.设置环境变量 1,JAVA_HOME 2.CATALINA_ ...