一 链表定义
一组分散的内存块通过指针串联在一起。
二 特点
(1)不需要连续的内存空间。
(2)引用指针
(3)三种最常见的链表结构:单链表、双向链表和循环链表
三 单链表
头节点和最后一个节点。头节点用来记录链表 基地址。尾节点 指向下一个空地址null
四 循环链表
尾节点指针指向链表 的头节点
五 双向链表
它支持两个方向,每个结点都有一个以上的针next指向后面的结点,还有一个前驱指针prev指向前面的结点
基本操作
package yrz; public class LinkedList { private Node head ; public void addHead(int data) { Node headNode = new Node(data); headNode.next = head; head = headNode; } public void addMiddleData(int index,int data) { if(index == 0) { addHead(data); }else { Node headNode = new Node(data); Node cur = head ; for(int i = 0; i<index ; i ) { cur = head.next; } headNode.next = cur.next; cur.next = headNode; } } public void deleteHeadNode() { head = head.next; } public void deleteMiddleData(int index) { if(index == 0) { deleteHeadNode(); }else { Node cur = head; for(int i=0;i<index;i ) { cur = head.next; } cur.next = cur.next.next; cur.next.next = null; } } public void print() { Node cur = head; while(cur!=null) { System.out.print(cur.value); cur = cur.next; } } public void main(String[] args) { LinkedList list = new LinkedList(); list.addHead(2); list.addHead(1); list.addHead(0); list.print(); } } class Node{ Node next; ///指向下一个节点的指针 int value; //节点值 Node(int value){ this.value = value ; this.next = next ; } }