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 ...
随机推荐
- Python高手之路【九】python基础之迭代器与生成器
迭代器与生成器 1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外 ...
- 【转】Hive执行计划
执行语句 hive> explain select s.id, s.name from student s left outer join student_tmp st on s.name = ...
- C#文件处理
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- js ajax 调试
谷歌浏览器 F12->network->()请求ajax)->出现ajax调用的方法名-->点击查看网站请求地址--返回所有的数据(preview面板中) success返回后 ...
- NGINX----源码阅读---config配置脚本
config文件为nginx的配置入口文件. 1. #!/bin/sh # Copyright (C) Igor Sysoev # Copyright (C) Nginx, Inc. LC_ALL=C ...
- 制作自己的web字体
今天教给大家制作自己的web字体
- 常用的html标签大全
html标签大全 一.文字 1.标题文字 <h#>..........</h#> #=1~6:h1为最大字,h6为最小字 2.字体变化 <font>........ ...
- Unity3DGUI:鼠标click
Input函数监测鼠标操作 鼠标点击事件 鼠标双击事件
- MVC之联动学习
一,数据库表设计 CREATE TABLE [dbo].[HY_Province]( [id] [INT] NOT NULL, [province] [NVARCHAR]() NOT NULL, CO ...
- java 随机生成11位 组合
public static String generate8RateUuid() { String[] chars = new String[] { "a", & ...