巩固数据结构 单链表java实现 单链表除了表尾 每个几点都有一个后继 结点有数据和后继指针组成  通过构建表头和表尾(尾部追加需要)两个特殊几点 实现单链表的一些操作,代码如下

package com.shine.test.datastruct;

/**
* 简易链表
*
* @author SHINE
*
* @param <E>
*/
public class LinkList<E> { private Node head, tail;
private int size = 0; protected class Node<E> {
E data;
Node next;
} public LinkList() {
head = new Node();
head.next = null;
tail = new Node<E>();
} public void insert(E e, int index) {
Node newNode = new Node<E>();
newNode.data = e; Node before = head;
Node temp = head.next;
while (index >= 0) {
if (index == 0) {
before.next = newNode;
newNode.next = temp;
size++;
break;
}
before = temp;
temp = temp.next;
index--;
}
} public void add(E e) {
Node node = new Node();
node.data = e;
node.next = null;
if (head.next == null) {
head.next = node;
}
tail.next = node;
tail = node;
size++;
} public E get(int index) {
if (index > size - 1) {
return null;
}
Node temp = head.next;
while (index >= 0) {
if (index == 0) {
return (E) temp.data; }
temp = temp.next;
index--;
}
return null;
} public E getFirst() {
return get(0);
} public E getLast() {
return get(size - 1);
} public void remove(E e) {
Node before = head;
Node temp = head.next;
while (temp != null) {
if (temp.data.equals(e)) {
before.next = temp.next;
size--;
break;
}
before = temp;
temp = temp.next;
}
} @Override
public String toString() {
StringBuffer sb = new StringBuffer();
Node temp = head.next;
while (temp != null) {
sb.append(temp.data + "->");
temp = temp.next;
}
return sb.toString();
} public int getLength() {
return size;
}
}

  

数据结构——单链表java简易实现的更多相关文章

  1. python实现数据结构单链表

    #python实现数据结构单链表 # -*- coding: utf-8 -*- class Node(object): """节点""" ...

  2. C语言数据结构-单链表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作

    1.数据结构-单链表的实现-C语言 typedef struct LNode { int data; struct LNode* next; } LNode,*LinkList; //这两者等价.Li ...

  3. Java数据结构--单链表

    #java学习经验总结------单链表的建立与结点的增删 在该链表结点有data数据,并且还有cpu,分给cpu随机的时间片,根据时间片大小进行结点data的排序 链表结点的建立 class Lin ...

  4. JAVA数据结构——单链表

    链表:一. 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间.并把原有的数据元 ...

  5. java数据结构——单链表、双端链表、双向链表(Linked List)

    1.继续学习单链表,终于摆脱数组的魔爪了,单链表分为数据域(前突)和引用域(指针域)(后继),还有一个头结点(就好比一辆火车,我们只关心火车头,不关心其它车厢,只需知晓车头顺藤摸瓜即可),头结点没有前 ...

  6. 单链表Java实现

    近期在复习基本数据结构,本文是单链表的Java实现,包含对单链表的实现插入删除查找遍历等.最后还实现了单链表的逆置. 实现了多项式相加,多项式相乘. 原文章及完整源码在这里 http://binhua ...

  7. C# 数据结构--单链表

    什么是单链表 这两天看到很多有关单链表的面试题,对单链表都不知道是啥的我.经过学习和整理来分享一下啥是单链表和单链表的一些基本使用方法.最后看些网上有关单链表的面试题代码实例. 啥是单链表? 单链表是 ...

  8. 数据结构-------单链表(C++)

    相关信息: /** * @subject 数据结构 实验2 * @author 信管1142班 201411671210 赖俊杰 * @project 单链表 * @time 2015年10月29日1 ...

  9. 单链表---java实现

    单链表优点:1.不需要预先给出元素个数. 2.单链表插入删除时不需要移动数据元素. 单链表缺点:1.每个节点有指针,空间利用率低. 2.单链表不支持随机读取数据. Node.java package ...

随机推荐

  1. ldap 基本名词解释(3)

    名词解释 Objectclass LDAP对象类,是LDAP内置的数据模型.每种objectClass有自己的数据结构,比如我们有一种叫“电话薄”的objectClass,肯定会内置很多属性(attr ...

  2. LCS,LIS,LCIS

    网站:CSUST 8月3日(LCS,LIS,LCIS) LCS:      以下讲解来自:http://blog.csdn.net/yysdsyl/article/details/4226630 [问 ...

  3. SVN提示被锁定的解决方法(转)

    1.(常用)出现这个问题后使用“清理”即"Clean up"功能,如果还不行,就直接到上一级目录,再执行“清理”,然后再“更新”. 2.(没试过)有时候如果看到某个包里面的文件夹没 ...

  4. Linux 命令未自动提示补全

    解决方法: yum install -y bash-completion 退出当前界面,重新进入即可.

  5. HDU 3934

    /*这是用的有旋转卡壳的思想. 首先确定i,j,对k进行循环,知道找到第一个k使得cross(i,j,k)>cross(i,j,k+1),如果k==i进入下一次循环. 对j,k进行旋转,每次循环 ...

  6. UVA10862 - Connect the Cable Wires(递推 + java的大数)

    UVA10862 - Connect the Cable Wires(递推 + java的大数) 题目链接 题目大意:给你n座房子位于一条直线上,然后仅仅给你一个cable service.要求每座房 ...

  7. 关于JOS 未对全部内存分页映射之前 物理地址映射问题的思考

    在kern/pmap.c 里面会又以下这段代码,要知道boot_alloc只会分配线性地址,真正建立虚拟页和物理页映射关系的在后面的page_alloc. ////////////////////// ...

  8. HDU 5412 CRB and Queries(区间第K大 树套树 按值建树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=5412 Problem Description There are N boys in CodeLan ...

  9. 分享一个android仿ios桌面卸载的图标抖动动画

    直接上代码,如有更好的,还请不吝赐教 <span style="font-size:18px;"><?xml version="1.0" en ...

  10. nginx源代码分析--进程间通信机制 &amp; 同步机制

    Nginx源代码分析-进程间通信机制 从nginx的进程模型能够知道.master进程和worker进程须要通信,nginx中通信的方式有套接字.共享内存.信号.对于master进程,从外部接受信号, ...