数据结构单向链表的创建以及遍历java

数据结构的学习多是以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();
	}

}

4.测试结果

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我有一计,,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值