这几天工作量不大,写了一个双向链表的实现。
在linkedlist中,每一个元素所存放的位置都可以理解成一个特殊结构的节点,这个节点分为三个部分:1.前一个节点是谁,自己,后一个节点是谁.
直接上干货
package myLinkedList; public class MyLinkedList { private Node firstNode; private Node lastNode; private int size; /** * @Chunf * add an element with index * @param obj */ public void add(Object obj){ Node n = new Node(); if(firstNode==null){ n.setPrevious(null); n.setObj(obj); n.setNext(null); firstNode = n; lastNode = n; }else{ n.setPrevious(lastNode); n.setNext(null); n.setObj(obj); lastNode.setNext(n); lastNode = n; } size++; } /** *@author Chunf * *return counts of the elements in this collection */ public int size(){ return size; } /** * @Chunf * get an element * @param obj */ public Object get(int index){ if(firstNode==null){ return null; }else{ if(index==0){ return firstNode.getObj(); }else{ Node node = firstNode; Object res = null; for(int i=1;i<=index;i++){ res = node.getNext().getObj(); node = node.getNext(); } return res; } } } public void remove(int index){ Node node = null; if(index==0){ node = firstNode; }else{ Node temp = firstNode; Node res = null; for(int i=1;i<=index;i++){ res = temp.getNext(); temp = temp.getNext(); } node = res; } Node previousNode = node.getPrevious(); Node nextNode = node.getNext(); previousNode.setNext(nextNode); nextNode.setPrevious(previousNode); size--; } /** * * @author Chunf * * @Time 2015年8月25日 */ class Node{ private Node previous; private Object obj; private Node next; public Node getPrevious() { return 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 void setPrevious(Node previous) { this.previous = previous; } } }
相关推荐
相信大家都明白 LinkedList 是基于双向链表而实现的,本篇文章主要讲解一下双向链表的实现,并且我们参考 LinkedList 自己实现一个单链表尝试一下。 什么是链表? 简单的来讲一下什么是链表:首先链表是一种线性的...
本文实例讲述了C#双向链表LinkedList排序实现方法。分享给大家供大家参考。具体如下: 1.函数 打印链表函数PrintLinkedList 和 排序函数SortLinkedList 注:下面代码中的链表每项都是double类型,如果换做其他的类型...
JAVA链表的介绍(包含单项链表、双向链表)、LinkedList 与 ArrayList 比较、链表的基本操作、基本方法等
这是自己写的一个Java实现模拟数据结构中的LinkedList。实现其简单的添加节点功能
基于linkedList实现自己的双向链表反转。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
单双链表的创建,节点的添加与删除,链表逆序,链表遍历。
二叉搜索树 转为 双向链表, 导入eclipse时要改包名package classOne; BST To Double LinkedList change package name,
链表该项目提供了单向、双向和循环链表的示例
编写环境 VS2008 VB.net编写的双向链表, 支持 添加,插入,搜索, 排序,清除, 双向输出
自定义模拟LinkedList的实现!数据结构的分析,有助于喜欢研究数据结构的朋友一起探讨,qq:303651404
JAVA面试题集1.doc JAVA面试题集1.doc
阶段练习:实现链表(LinkedList) 简介:写一个链表的数据结构,要求实现IList接口。 具体要求: 1、 使用代码规范。 2、 至少对IList中的Add,Remove,Insert,Indexer,IEnumerator进行单元测试。 3、 对上述每个...
链表类LinkedList的完全c++实现,根据数据结构与算法课堂总结。
LinkedList一个简单的双链表实现,提供了Append、Prepend、Remove、ForEach、ForEachRev、Map、Filter、Reduce
Rust 中的双向链表实现纯粹用于教育和娱乐目的。对于现实世界的制作,请使用std::collections::LinkedList甚至std::vec::Vec (这是 2021 人)。快速开始$cargo run --release参考...
线性结构和非线性结构、稀疏数组、队列、链表(LinkedList) 数组和链表.pdf
一个抽象链表类的C++模板实现,主要适合初学者入门数据结构基础。
该资源利用基础的链表结构,结合泛型和反射的知识点,实现重写LinkedList集合类,可以存放任意类型数据。比较推荐对Java有稳固基础的同学来阅读,为了方便阅读,代码的注释写的非常的清楚
主要包含双向链表:com.imyiren.datastructure.linkedlist.DoubleLinkedList 包括:双向链表的添加、遍历、修改、删除 延伸出单向环形链表 解决约瑟夫斯问题:com.imyiren.datastructure.linkedlist.JosephuQuestion...