链表的介绍
1,链表是有序的列表,
2,分为有头部的和没有头部的,
3,next域指向下一个节点,next域为null 则链表结束了,
4,链表以节点的方式存储,
5,节点不一定连续存储,存储如下图
2345截图20211011103103.png
链表的创建
PersonNode
public class PersonNode
{
public int id;
public String name;
public String nickName;
public PersonNode next;
public PersonNode(int id, String name, String nickName)
{
this.id = id;
this.name = name;
this.nickName = nickName;
}
@Override
public String toString()
{
return "PersonNode{" +
"id=" + id +
", name='" + name + '\'' +
", nickName='" + nickName + '\'' +
'}';
}
}
SingleLinkedList
public class SingleLinkedList
{
//先初始化一个头节点,头节点不要动,不存放具体的数据
private PersonNode head = new PersonNode(0, "", "");
/**
* 找到当前链表的最后节点,将最后节点的next 指向 新节点
*/
public void add(PersonNode personNode)
{
//头节点需要不变,因此需要一个辅助temp
PersonNode temp = head;
while (true)
{
//
if (temp.next == null)
{
break;
}
temp = temp.next;
}
//
temp.next = personNode;
}
/**
* 找到当前链表的最后节点,将最后节点的next 指向 新节点
*/
public void list()
{
//
if (head.next == null)
{
Log.d("TAG", "链表为空");
return;
}
PersonNode temp = head.next;
while (true)
{
//
if (temp == null)
{
break;
}
System.out.println(temp);
temp = temp.next;
}
//
}
}
测试
@Test
public void showList()
{
PersonNode node1 = new PersonNode(1, "刘德华", "AAA");
PersonNode node2 = new PersonNode(2, "周星驰", "BBB");
PersonNode node3 = new PersonNode(3, "刘亦菲", "CCC");
PersonNode node4 = new PersonNode(4, "范冰冰", "DDD");
SingleLinkedList singleLinkedList = new SingleLinkedList();
singleLinkedList.add(node1);
singleLinkedList.add(node2);
singleLinkedList.add(node3);
singleLinkedList.add(node4);
singleLinkedList.list();
}
输出结果
image.png