链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。
实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:
- 单向、带头、循环
- 双向 、不带头 、非循环
无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈 希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多。
相关方法代码实现:
package List;
class LinkedNode {
public int data;
public LinkedNode next = null;
public LinkedNode(int elem) {
this.data = elem;
}
}
public class linkedList {
private LinkedNode head = null;
//头插法
public void addFirst(int elem){
LinkedNode node = new LinkedNode(elem);
if(this.head == null){
this.head = node;
return;
}
node.next = head;
this.head = node;
return;
}
// 尾插法
public void addLast(int elem){
LinkedNode node = new LinkedNode(elem);
if(this.head == null){
this.head = node;
return;
}
LinkedNode cur = this.head;
while(cur.next != null){
cur = cur.next;
}
cur.next = node;
}
// 找链表的长度
public int size(){
LinkedNode prev = this