java实现双向链表
PS:双向链表(每个节点含有指向前一个节点的前驱与后一个节点的后继)
public class DoublyLinkedList {
static class Node {
private Object data;
private Node prev;
public Node getPrev() {
return prev;
}
public void setPrev(Node prev) {
this.prev = prev;
}
private Node next;
public Node(Object value) {
this.data = value;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
@Override
public String toString() {
return String.valueOf(data);
}
}
private Node head;// 头节点
public DoublyLinkedList() {
head = new Node(null);
}
// 双向链表表头插入节点
public void addFirst(Object value) {
Node node = new Node(value);
if (head.next == null) {
head.next = node;
node.prev = head;
} else {
node.prev = head;
node.next = head.next;
head.next.prev = node;
head.next = node;
}
// head=node;
}
// 删除表头
public void removeFirst() {
Node node = head.next;
if (node.next != null) {
node.next.prev = head;
head.next = node.next;
}
}
// 顺序打印链表
public void printList() {
Node node = head.next;
while (node != null) {
System.out.print(node.data + " ");
node = node.next;
}
System.out.println();
}
// 逆序打印链表
public void reversePrintList() {
Node node = head.next;
Node tail = null;
while (node.next != null) {
node = node.next;
}
tail = node;
// System.out.println(tail.data);
while (tail.prev != null) {
System.out.print(tail.data + " ");
tail = tail.prev;
}
System.out.println();
}
public static void main(String[] args) {
DoublyLinkedList linkedList = new DoublyLinkedList();
for (int i = 0; i < 10; i++) {
linkedList.addFirst(i);
}
System.out.println("顺序打印链表");
linkedList.printList();
System.out.println("逆序打印链表");
linkedList.reversePrintList();
System.out.println("依次删除头结点");
for (int i = 0; i < 10; i++) {
linkedList.removeFirst();
linkedList.printList();
}
}
}
java实现双向链表的更多相关文章
- 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:双向链表反转实现
有个小需求要求实现一个双向链表的反转于是就有了下边代码: 链表元素结构定义: package com.util; public class LinkedNode<T>{ private T ...
- java中双向链表的增、删、查操作
import java.util.NoSuchElementException; public class DoublyLinkedListImpl<E> { private Node h ...
随机推荐
- Linux标准输入、输出和错误和文件重定向(转) --- good
标准输入.输出和错误 当我们在shell中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件.由于文件描述符不容易记忆,shell同时也给出了相应的文件名.下面就是这些文 ...
- FFT修正
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #inc ...
- POJ 2923 Relocation
题目大意:有n个物品,有两辆车载重分别是c1,c2.问需要多少趟能把物品运完. (1 ≤ Ci ≤ 100,1 ≤ n ≤ 10,1 ≤ wi ≤ 100). 题解:n小思状压.我们先把所有一次可以拉 ...
- iOS开发手记 - iOS9.3 Xcode7打包ipa文件在其他越狱机器上运行的方法和一些问题
现在Xcode7可以用一个appleid就可以往手机上部署测试app,不再需要$99,这也是方便.但是要把app发给别人的手机上运行还是不行,除非别人的手机在你身边可以直接通过Xcode安装 关于怎么 ...
- HDOJ(HDU) 1408 盐水的故事
Problem Description 挂盐水的时候,如果滴起来有规律,先是滴一滴,停一下:然后滴二滴,停一下:再滴三滴,停一下-,现在有一个问题:这瓶盐水一共有VUL毫升,每一滴是D毫升,每一滴的速 ...
- HDU_2046——骨牌铺放问题,递推
Problem Description 在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数. 例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图: In ...
- guestfish 修改 image file
Example guestfish sessionSometimes, you must modify a virtual machine image to remove any traces of ...
- hadoop2.2.0的WordCount程序
package com.my.hadoop.mapreduce.wordcount; import java.io.IOException; import org.apache.hadoop.conf ...
- java基础知识(二)
java的布局管理: borderLayout:则将板块分为东西南北中五个方向,每添加一个组件就要指定组件摆放的方位,放置在东西南北四个方向的组件将贴边放置.当拉大Frame的时候,处在center( ...
- java中 SSL认证和keystore使用
java中 SSL认证和keystore使用 2013-10-12 11:08 10488人阅读 评论(0) 收藏 举报 目录(?)[+] 好久没用过SSL认证了,东西久不用,就有点生疏. ...