数据结构的学习多是以c语言作为开发语言,但指针的套娃式使用极为繁琐,Java语言明确删除指针,在链表的创建上更加容易理解。
点赞加关注,一起学习一起进步。
链表基本定义
1.链表以节点的方式来存储
2.每个节点包括数据域(data)和指针域(next)
3.各个节点不一定连续存储
4.链表分为带头节点和不带头节点的
接下来举例说明单向链表使用Java语言创建:创建单向链表保存学生信息
1.学生实体类
也可以理解为单个节点信息类,先创建单个节点,再创建空链表,最后把一个个节点插入链表
package linkedList;
/**
* @author li
* 学生实体类,根据这个类创建的每一个对象都是单链表的一个节点
*
*/
public class StudentNode {
public int ranking;//成绩排名
public String name;//学生姓名
public StudentNode next;//指向下一个节点
/*构造器
*
*/
public StudentNode(int ranking,String name) {
this.name=name;
this.ranking=ranking;
}
}
2.创建单链表
package linkedList;
/**
* @author li
* 单链表类,
*
*/
public class singleLinkedList {
// 初始化头节点,头节点固定不能更改头节点不存放具体数据
private StudentNode head =new StudentNode(0,"");
/*
* 添加节点到单向链表的最后
* 首先需要找到当前链表的最后一个节点
* 让最后节点的next域指向新节点
* 新节点即为studentNode
*/
public void add(StudentNode studentNode) {
//head头节点不能移动,定义辅助变量(指针)指向head,temp可以移动
StudentNode temp=head;
//遍历寻找表尾
while(true) {
if(temp.next==null) {
break;
}
temp=temp.next;
}
//当循环退出,temp指向原链表的表尾节点
//完成新节点的添加
temp.next=studentNode;
}
/*
* 遍历显示单链表
*/
public void list() {
if(head.next==null) {
System.out.println("该链表为空");
return;
}
//再次使用辅助变量(指针)temp,指向第一个数据节点
StudentNode temp=head.next;
while(true) {
//尾节点的下一个next为空,即循环遍历结束
if(temp==null) {
break;
}
//输出节点信息
System.out.println(temp.name+"\t"+temp.ranking);
//辅助变量(指针)后移
temp=temp.next;
}
}
}
3.测试类
在测试类中完成一个个节点和空链表的组装
package linkedList;
/**
* @author li
*测试类,对单链表功能进行测试
*先创建部分节点,再创建链表,手动把节点加入链表
*/
public class text {
public static void main(String[] args) {
//创建节点
StudentNode s1=new StudentNode(1,"张三");
StudentNode s2=new StudentNode(3,"李四");
StudentNode s3=new StudentNode(2,"王五");
//创建单链表
singleLinkedList singleLinkedList1=new singleLinkedList();
//加入节点
singleLinkedList1.add(s3);
singleLinkedList1.add(s2);
singleLinkedList1.add(s1);
//遍历显示
singleLinkedList1.list();
}
}