java实现双端链表
PS:双端链表(持有对最后一个节点的引用,允许表尾操作与表头操作等效的功能)
public class DoubleLinkedList {
//节点类
static class Node {
public Object data;
public Node next; public Node(Object dd) {
data = dd;
} @Override
public String toString() {
return String.valueOf(data);
}
} public Node head;//头结点
public Node tail;//尾节点 public DoubleLinkedList() {
head = null;
tail = null;
} public boolean isEmpty() {
return (head == null);
} // 表头插入
public void insertFirst(double dd) {
Node newLink = new Node(dd);
if (isEmpty()) {// 第一次插入节点
tail = newLink;
}
newLink.next = head;
head = newLink;
} // 表尾插入
public void insertLast(double dd) {
Node newLink = new Node(dd);
if (isEmpty()) {
head = newLink;
} else {
tail.next = newLink;
}
tail = newLink;
} // 删除表头
public void deleteFirst() {
head = head.next;
if (head.next == null) {
tail = null;
}
} public void displayList() {
System.out.print("List (first--->last)");
Node current = head;
while (current != null) {
System.out.print(current.data + " ");
current = current.next;
}
System.out.println();
} public static void main(String[] args) {
DoubleLinkedList linkedList = new DoubleLinkedList();
for (int i = 0; i <= 30; i += 5) {
// 头插
linkedList.insertFirst(i);
}
System.out.println("头插");
linkedList.displayList();
// 删除表头数据
linkedList.deleteFirst();
linkedList.displayList();
linkedList = new DoubleLinkedList();
for (int i = 0; i <= 30; i += 5) {
// 尾插
linkedList.insertLast(i);
}
System.out.println("尾插");
linkedList.displayList();
linkedList.deleteFirst();
linkedList.displayList();
}
}
java实现双端链表的更多相关文章
- Java数据结构——双端链表
//================================================= // File Name : FirstLastList_demo //------------ ...
- Java数据结构——用双端链表实现队列
//================================================= // File Name : LinkQueue_demo //---------------- ...
- Java单链表、双端链表、有序链表实现
单链表: insertFirst:在表头插入一个新的链接点,时间复杂度为O(1) deleteFirst:删除表头的链接点,时间复杂度为O(1) 有了这两个方法,就可以用单链表来实现一个栈了,见htt ...
- 《Java数据结构与算法》笔记-CH5-链表-3双端链表
/** * 双端链表的实现 */ class LinkA { public long dData; public LinkA next; public LinkA(long d) { dData = ...
- 队列(存储结构双端链表)--Java实现
/*用链表实现的队列--使用的是双端链表 *注意:空指针错误肯定是引用没有指向对象 * */ public class MyLinkedQueue { private MyFirstAndLastLi ...
- 双端链表--Java实现
/*双端链表--比普通链表多了一个指向最后一个节点的引用 * 特点: 链表可以进行尾巴插入--输出顺序和输入顺序一致 * 但是不可以进行尾巴删除因为没有倒数第二节点的引用 * */ public cl ...
- JAVA基础——链表结构之双端链表
双端链表:双端链表与传统链表非常相似.只是新增了一个属性-即对最后一个链结点的引用 如上图所示:由于有着对最后一个链结点的直接引用.所以双端链表比传统链表在某些方面要方便.比如在尾部插入一个链结点.双 ...
- java数据结构——单链表、双端链表、双向链表(Linked List)
1.继续学习单链表,终于摆脱数组的魔爪了,单链表分为数据域(前突)和引用域(指针域)(后继),还有一个头结点(就好比一辆火车,我们只关心火车头,不关心其它车厢,只需知晓车头顺藤摸瓜即可),头结点没有前 ...
- 循环双端链表(python)
# -*- coding: utf-8 -*- class Node(object): __slots__ = ('value', 'prev', 'next') # save memory def ...
随机推荐
- Boost编程之获取可执行文件的当前路径
#include <boost/filesystem/path.hpp> #include <boost/filesystem/operations.hpp> std::str ...
- Yii创建前台和后台登录表单和通过扩展 CWebUser 增加信息到 Yii::app()->user
我参考了这篇文章来构建项目的前台和后台的目录结构.感谢Andy的这篇文章.按照所有的步骤,您将有单独的前台和后台面板,如: http://localhost/index.php // 前台 http: ...
- kill,killall,top,free,vmstat,iostat,watch命令
kill命令 Linux 中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以 使用Ctrl+C键,但是,对 ...
- iOS 操作系统架构
Mac OS 和 iOS 操作系统架构 做iOS开发已经半年多了,但是感觉对iOS开发的理解却还只停留在表面,昨天刚把两个项目结了,今天打算学了一下iOS系统的架构,以便于更好的理解和开发. 首先看一 ...
- 联系我们_站内信息_站内资讯_网上定制衬衫|衬衫定制|衬衫定做-ChenShanLe衬衫乐
联系我们_站内信息_站内资讯_网上定制衬衫|衬衫定制|衬衫定做-ChenShanLe衬衫乐 衬衫乐定制网是国内领先的成衣定制机构,专业从事衬衫网络在线定制.高级定制服装的价格不菲,而衬衫乐运用了&qu ...
- solr全文检索基本原理
场景:小时候我们都使用过新华字典,妈妈叫你翻开第38页,找到“坑爹”所在的位置,此时你会怎么查呢?毫无疑问,你的眼睛会从38页的第一个字开始从头至尾地扫描,直到找到“坑爹”二字为止.这种搜索方法叫做顺 ...
- security Export/import
export [-k keychain] [-t type] [-f format] [-w] [-p format] [-P passphrase] [-o outfile] Export one ...
- Angular基础教程:表达式日期格式化[转]
本地化日期格式化: ({{ today | date:'medium' }})Nov 24, 2015 2:19:24 PM ({{ today | date:'short' }})11/24/15 ...
- volatile-java关键字
volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值. 简单地说就是防止编译器对代码进行优化.比如如下程序: XBYTE[2]=0x55; XBYTE[2 ...
- ios 常用字符串NSString的操作
//将NSData转化为NSString NSString* str = [[NSString alloc] initWithData:response encoding:NSUTF8S ...