Java 数据结构 - 双向链表
双向链表是链表的一种变体,与单向链表相比,它可以轻松地向前和向后导航。以下是一些了解双向链表概念的重要术语。
链接 − 链表的每个链接都可以存储称为元素的数据。
下一个 − 链表的每个链接都包含一个指向下一个链接的链接,称为 Next。
前一个 − 链表的每个链接都包含一个指向前一个链接的链接,称为 Prev。
链表 − 链表包含一个指向第一个链接的连接链接,称为 First,以及一个指向最后一个链接的链接,称为 Last。
双向链表表示
- 双向链表包含一个称为 first 和 last 的链接元素。
- 每个链接都包含一个或多个数据字段和两个链接字段,称为 next 和 prev。
- 每个链接都使用其 next 链接与其下一个链接链接。
- 每个链接都使用其 previous 链接与其前一个链接链接。
- 最后一个链接带有 null 链接以标记列表的结尾。
示例
class Node{
int data;
Node preNode, nextNode, CurrentNode;
Node() {
preNode = null;
nextNode = null;
}
Node(int data) {
this.data = data;
}
}
public class DoublyLinked {
Node head, tail;
int size;
public void printData() {
System.out.println(" ");
Node node = head;
while(node !=null) {
System.out.println(node.data);
node = node.nextNode;
}
System.out.println( );
}
public void insertStart(int data) {
Node node = new Node();
node.data = data;
node.nextNode = head;
node.preNode = null;
if(head!=null) {
head.preNode = node;
}
head = node;
if(tail == null) {
tail = node;
}
size++;
}
public void insertEnd(int data) {
Node node = new Node();
node.data = data;
node.nextNode = null;
node.preNode = tail;
if(tail!=null) {
tail.preNode = node;
}
tail = node;
if(head == null) {
head = node;
}
size++;
}
public static void main(String args[]) {
DoublyLinked dl = new DoublyLinked();
dl.insertStart(10);
dl.insertStart(20);
dl.insertStart(30);
dl.insertStart(1);
dl.insertStart(56);
dl.insertStart(40);
dl.printData();
}
}
输出
40 56 1 30 20 10
广告