一般将数据结构分为两大类:纯性数据结构和非线性数据结构。纯性数据结构有线性表、栈、队列、串、数组和文件;非线性数据结构有树和图(子类、继承等)。
结性表按其存储结构可分为顺序表和链表。用顺序存储结构存储的线性表称为顺序表;用链式存储结构存储的线性表称为链表。
将线性表中的数据元素依次存放在某个存储区域中,所形成的表称为顺序表。一维数组就是用顺序方式存储的线性表。
链表又分为:单向链表和双方链表
单向链表Demo:
package com.wansha; /** * * @author sharp * @data 2011-9-13 * @version 1.0 * */ public class Node { public String data; public Node nextnode; public Node() { } public Node(String data) { this.data = data; } }
Test.java
package com.wansha; /** * * @author sharp * @data 2011-9-13 * @version 1.0 * */ public class Test { public static void main(String[] args) { Node node1 = new Node("Node1"); Node node2 = new Node("Node2"); Node node3 = new Node("Node3"); node1.nextnode = node2; node2.nextnode = node3; //通过node1获取node3的内容 System.out.println(node1.nextnode.nextnode.data); } }
双向链表Demo:
Node2.java
package com.wansha; /** * * @author sharp * */ public class Node2 { public Node2 pre; public String data; public Node2 next; public Node2() { } public Node2(String data) { this.data = data; } }
Test2.java
package com.wansha; /** * * @author sharp * */ public class Test2 { public static void main(String[] args) { Node2 node1 = new Node2("node1"); Node2 node2 = new Node2("node2"); Node2 node3 = new Node2("node3"); node1.pre = node3; node1.next = node2; node2.pre = node1; node2.next = node3; node3.pre = node2; node3.next = node1; // 通过node1获得node3内容的两种方式 System.out.println(node1.pre.data); System.out.println(node1.next.next.data); System.out.println("-----------------------"); // 在1的位置上插入node4 Node2 node4 = new Node2("node4"); node1.next = node4; node2.pre = node4; node4.pre = node1; node4.next = node2; // 通过node1获得node3内容的两种方式 System.out.println(node1.pre.data); System.out.println(node1.next.next.next.data); System.out.println("-----------------------"); // 删除node4 node4.pre = null; node4.next = null; node1.next = node2; node2.pre = node1; // 通过node1获得node3内容的两种方式 System.out.println(node1.pre.data); System.out.println(node1.next.next.data); } }