链表和数组在数据结构中属于同级结构 链表是一种非连续非顺序的存储结构 链表是有多个结点组成的,结点由数据和指针组成,单链表暴露的只有一个头结点,对单链表的增删查改都通过头结点来进行 单链表结构如下图所示 通过Java来实现单链表
- 创建一个结点勒,结点类有两个属相,一个是用于存放数据的data,一个是用于指向下一个结点的指针next
public class Node {
public int data;
public Node next;
public Node(int data) {
this.data = data;
}
}
- 判断链表的长度
private int length() {
int length =0;
Node temp = head;
while (temp.next != null){
length++;
temp = temp.next;
}
return length;
}
- 创建链表,通过在头结点后方加入结点来创建
public class SingleLink {
Node head = null;
public void addnode(Node node){
Node temp = head;
while (temp.next !=null){
temp=temp.next;
}
temp.next = node;
}
}
- 在指定的位置插入结点
public void insertNodeindex(int index, Node node){
if (index<1||index>length()+1){
System.out.println("此位置不合法或缺失,无法插入");
return;
}
int length =1;
Node temp = head;
while (head.next != null){
if (index == length){
node.next = temp.next;
temp.next = node;
return;
}
temp = temp.next;
}
}
5.删除结点
public void deletenode(int index){
if (index<1 || index>length()){
System.out.println("指定的位置不合法");
}
int length =1;
Node temp = head;
while (temp.next != null){
if (index == length++){
temp.next = temp.next.next;
return;
}
temp = temp.next;
}
}
- 查找链表中间的结点
public Node SearchMidNode(Node node) {
Node fastnode = this.head, slownode = this.head;
while (fastnode != null && slownode != null &&fastnode.next != null && fastnode.next.next != null) {
fastnode = fastnode.next.next;
slownode = slownode.next;
}
System.out.println("链表中中间结点的值为"+slownode.data);
return slownode;
}
-
单链表排序 7.1单链表选择排序
|