线性结构---链表
线性结构
线性结构是比较常见的数据结构,特点是数据元素之间存在一对一的的线性关系
线性结构有两种不同的存储结构:(1)顺序存储结构 (2)链式存储结构
线性结构常见的有:数组,队列,链表,和栈
链表
链表是有序的列表,但是他在内存中的存储如下
- 链表是以节点方式存储
- 如图:链表的各个节点不一定连续存储
- 单链表的逻辑结构示意图:
使用带Head头的单向链表实现 - 学生成绩排行榜管理,完成对学生的增删改查操作
//定义StudentNode , 每个StudentNode 对象就是一个节点
class StudentNode {
public int no;
public String name;
public String score;
public HeroNode next; //指向下一个节点
//构造器
public StudentNode(int no, String name, String score) {
this.no = no;
this.name = name;
this.score = score;
}
//为了显示方法,我们重新toString
@Override
public String toString() {
return "StudentNode [no=" + no + ", name=" + name + ", score=" + score + "]";
}
}
创建学生SingleLinkedList来管理成员
class SingleLinkedList{
//先初始化一个头节点,头结点不要动,不存方数据
private StudentNode head = new SudentNode(0,"","");
//返回头节点
public StudentNode getHead() {
return head;
}
在尾部添加节点
//添加节点到单向链表
//1,找到当前链表的最后节点
//2.将最后的一个节点next指向新的节点
public void add(StudentNode studentNode) {
//因为head节点不能动,因此我们需要一个辅助遍历 temp
StudentNode temp = head;
//遍历链表,找到最后
while(true) {
//找到链表的最后
if(temp.next == null) {//
break;
}
//如果没有找到最后, 将将temp后移
temp = temp.next;
}
//当退出while循环时,temp就指向了链表的最后
//将最后这个节点的next 指向 新的节点
temp.next = studentNode;
}