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 ...
随机推荐
- Object-Widgets-Quick 构造树
Object Tree 当以某个QObject为父类创建一个QObject时, 它会被添加到该父类的children列表中. 析构时, QObjet 会首先检查自己的children, 依次析构, 然 ...
- OSI模型第四层传输层--UDP协议
1.udp协议 UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成[2] ,提供面向事务的简单不可靠信息传送服务.UDP 协议 ...
- Amabri添加YDB报错
点部署直接出现如下图: 通过查看日志: tail -f /var/log/ambari-server/ambari-server.log java.lang.RuntimeException: Una ...
- Homestead PHP7安装phpredis扩展
sudo mkdir /home/phpredis/ && cd /home/phpredis/ sudo git clone -b php7 https://github.com/p ...
- 在虚拟机上配置linux lab的相关经验
最近一直在研究怎样在嵌入式开发板上移植linux嵌入式系统,但是不太想花费太多钱购买开发板.然后在网上搜索相关的arm模拟器.有qemu,skyeye,armulator等,在按照网上教程一步一步实践 ...
- Navicat连接不上MySQL
[root@localhost init.d]# pwd /etc/init.d [root@localhost init.d]# mysql -u root -p Enter password: E ...
- 敏捷开发(八)- Scrum Sprint计划会议1
本文主要是为了检测你对SCRUM Sprint 计划会议的了解和使用程度, 通过本文你可以检测一下 1.你们的SCRUM Sprint 计划会议的过程和步骤 2.会议的输出结果 S ...
- CodeForces 670A Holidays
简单题. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #inclu ...
- SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'dtdate' 解决方法
小微OAERR: SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'mime' at row ...
- ECOS-LNMP ZendGuard
因为ECOS产品加密后依赖PHP Zendguard运行(基于PHP5.3加密) 备注: Shopex485商城基于php5.2进行加密 URL:http://www.zend.com/en/pro ...