一、概念
链表(linked list)是一种在物理上非连续、非顺序的数据结构,由若干节点(node)所组成。
链表中数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元
素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据
域,另一个是存储下一个结点地址的指针域。(百度百科)
常见的链表包括:单链表、双向链表、循环链表
二、单链表
单向链表的每一个节点又包含两部分,一部分是存放数据的变量data,另一部分是指向下一个节
点的指针next
三 、双向链表
双向链表的每一个节点除了拥有data和next指针,还拥有指向前置节点的prev指针。
四、链表的代码
链表的实体类
package com.data.structure.linetable.linkedtable;
//链表的节点
public class Node {
int id;
String name;
//链表下一个节点
Node next;
public Node(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Node{" +
"id=" + id +
", name='" + name + '\'' +
", next=" + next +
'}';
}
}
单链表的重要代码添加
package com.data.structure.linetable.linkedtable;
public class LinkedTable {
private Node head=new Node(0,"");
//链表的添加
public void insert(Node node){
Node temp=head;
while (true){
if(temp.next==null){
break;
}
//移动以为
temp = temp.next;
}
temp.next=node;
// System.out.println(head.toString());
}
//遍历链表
public void showList() {
//空链表
if (head.next == null) {
System.out.println("链表为空");
return;
}
Node temp = head.next;
while (true) {
if (temp == null) {
return;
}
System.out.println(temp);
//指针下移
temp = temp.next;
}
}
public static void main(String[] args) {
Node node=new Node(1,"zhaoyanhui");
Node node2=new Node(2,"zhaoyanhui2");
Node node3=new Node(3,"zhaoyanhui2");
LinkedTable linkedTable = new LinkedTable();
linkedTable.insert(node);
linkedTable.insert(node2);
linkedTable.insert(node3);
System.out.println("linkedTable.head = " + linkedTable.head);
linkedTable.showList();
}
}