首先创建简单的链表节点
public class Node {
int data;
Node nextNode = null;
public Node(int data) {
this.data = data;
}
}
然后创建一个链表对象
public class LinkedList {
Node headerNode = null;
public LinkedList() {}
//像链表中添加元素的方法
public void addNode(int data) {
Node node = new Node(data);
//判断链表是否为空
if(headerNode == null) {
headerNode = node;
return;
}
Node tempNode = headerNode;
while (tempNode!=null) {
if(tempNode.nextNode==null) {
tempNode.nextNode = node;
return;
}
tempNode = tempNode.nextNode;
}
}
//删除指定下标的链表
public void deleNode(int index) {
if(index<1||index>this.length()) {
System.out.println("参数不合法");
return;
}
if(index==1) {
headerNode=headerNode.nextNode;
return;
}
int i = 2;
Node preNode = headerNode;
Node curNode = headerNode.nextNode;
while(curNode!=null) {
if(i==index) {
preNode.nextNode = curNode.nextNode;
return;
}
i++;
preNode = curNode;
curNode = curNode.nextNode;
}
}
//链表排序,使用的是插入排序算法
public void sortNode() {
Node preNode=headerNode;
int temp=0;
Node curNode=null;
while(preNode.nextNode!=null) {
curNode=preNode.nextNode;
while(curNode!=null) {
if(preNode.data>curNode.data) {
temp = curNode.data;
curNode.data = preNode.data;
preNode.data = temp;
}
curNode = curNode.nextNode;
}
preNode = preNode.nextNode;
}
}
//返回链表的长度
public int length() {
int count = 0;
if(headerNode==null) {
return 0;
}
Node tempNode = headerNode;
while(tempNode!= null) {
count++;
tempNode = tempNode.nextNode;
}
return count;
}
}
链表是一种常见du的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个元素:第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,它称为“表尾”,它的地址部分放一个“NULL”(表示“空地址”),链表到此结束。
ps:链表的相邻数据存储空间可能不连续。