链表:
链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。
链表是由一个一个的节点相连接的,每一个节点都是一个对象,都有两个属性(data,next)。
根据链表的结构可以分为:
1.带头、不带头
2.单向、双向
3.循环、非循环
这些组合起来就有8种结构;
编写一个具有简单功能的不带头结点的单向非循环链表。
class Node {
public int data;//默认值为0
public Node next;//默认值为0
public Node(int data) {
this.data = data;
this.next = null;
}
}
public class MyLinkedList {
public Node head;//保存单链表的头部节点的引用 默认值为null
//头插法(插入的数据会逆着输出)
public void addFirst(int data) {
Node node = new Node(data);//创建一个新的节点node
if (this.head == null) {
//第一次插入节点的情况
this.head = node;
return;
}/**单链表的插入的时候,要先绑后面*/
node.next = this.head;//将head的引用传给node的next
this.head = node;//让head指向node的引用
//注意不能写成this.head=this.node;因为note是具体方法中定义的局部变量,而this只能访问属性,方法,构造方法等。
}
//打印单链表
public void display() {
Node cur = this.head;
while (cur != null) {