java 用双向链表实现SJBLinkedList
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的更多相关文章
- JAVA实现双向链表的增删功能
JAVA实现双向链表的增删功能,完整代码 package linked; class LinkedTable{ } public class LinkedTableTest { //构造单链表 sta ...
- Java简单双向链表实现 @version 1.0
package com.list; /** * 数据结构和算法Java表示 双向链表 * * @version 1.0 * @author 小明 * */ public class MyDoublel ...
- JAVA单向/双向链表的实现
一.JAVA单向链表的操作(增加节点.查找节点.删除节点) class Link { // 链表类 class Node { // 保存每一个节点,此处为了方便直接定义成内部类 private Str ...
- 大话数据结构(八)Java程序——双向链表的实现
线性链表--双向链表 双向链表定义: 双向链表(double linked list): 是在单表单的每个结点中,再设置一个指向前驱结点的指针域.因此,在双向链表中的结点都有两个指针域,一个指向前驱, ...
- Java中双向链表的代码实现
写在前面: 双向链表是一种对称结构,它克服了单链表上指针单向性的缺点,其中每一个节点即可向前引用,也可向后引用,这样可以更方便的插入.删除数据元素. 由于双向链表需要同时维护两个方向的指针,因此添加节 ...
- Java数据结构--双向链表的实现
#java学习经验总结------双向链表的实现 双向链表的建立与单链表类似,只是需要使用pre指针指向前一个结点,并且在删除添加时不仅仅考虑next package datastructure; p ...
- Java数据结构——双向链表
//================================================= // File Name : DoublyLinked_demo //------------- ...
- java实现双向链表
PS:双向链表(每个节点含有指向前一个节点的前驱与后一个节点的后继) public class DoublyLinkedList { static class Node { private Objec ...
- Java:双向链表反转实现
有个小需求要求实现一个双向链表的反转于是就有了下边代码: 链表元素结构定义: package com.util; public class LinkedNode<T>{ private T ...
随机推荐
- trove 开发者阅读翻译
介绍 Trove为OpenStack提供数据库的服务.它的设计运行完全符合OpenStack,目标是让用户能快速.轻松地利用关系数据库的特点,没有负担的处理复杂的管理任务.云用户和数据库管理员可以根据 ...
- linux中如何查看某一进程的启动时间
mark下: ps -p PID -o lstart 其中PID是进程的pid ps的参数好多啊,够摸索一下了
- Java动态解压zip压缩包
import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; impo ...
- vlc-android1.8.0的全部源代码[包括C语言]
我们基于vlc,整理出了vlc-android1.8.0的全部源代码, 并增加了LibVLC的简单调用, 您只需要7行代码,就可以完成调用,和原生的MediaPlayer类似. 下载地址https:/ ...
- php注册数模式
在前两篇单例模式和工厂模式后,终于迎来了最后一个基础的设计模式--注册树模式. 什么是注册树模式? 注册树模式当然也叫注册模式,注册器模式.之所以我在这里矫情一下它的名称,是因为我感觉注册树这个名称更 ...
- C#基础、基础知识点(新人自我总结,开启java学习之路)
从2016年12月29开班,开课到现在C#基础已经算是简答的学习了一点,一个为期两周的课程,或多或少对现在学的Java有着一定的帮助吧,我们先从软件入门来接触c#这门语言: 一.软件开发中的常用术语: ...
- c++设计模式-----抽象工厂模式
抽象工厂模式 要创建一组相关或者相互依赖的对象 作用:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. UML类图 抽象基类: 1)AbstractProductA.Abstrac ...
- Intellij Idea使用频率较高的几个快捷键
自动补全参数定义: Ctrl+Alt+V 运行断点Expression: Alt+F8 选择具体的方法以断点步入:Shift+F7 智能操作: Alt+Enter 打开最近文件:Ctrl+E 打开最近 ...
- shell-逐行读取文件
代码: #!/bin/bash echo 方法1 while read line do echo $line; done < testdata echo "" echo 方法 ...
- js作用域详解
// 作用域:(1)域:空间.范围.区域…… (2) 作用:读.写 script 全局变量.全局函数 自上而下 函数 由里到外 浏览器: “JS解析器” 1)“找一些东西” :var func ...