栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

java单链表

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java单链表

今天学习了一下java单链表

public class Linked {
	public static class Node{
		public int value;	//定义数值
		public Node next;	//指向下一个节点
		
		public Node (int data) {//定义一个无参构造方法
			value = data;
		}
		//添加新的节点
		public void add(int newValue) {
			Node newNode = new Node(newValue);//创建链表对象,将要添加的值作为参数传递
			if(this.next==null) {//如果当前节点的下个节点没有值,则将参数的值,赋值给下个节点
				this.next = newNode;
			}else {//如果当前节点已经有值了,则递归调用add()方法来给下一个节点添加值
				this.next.add(newValue);
			}
		}
		//打印链表
		public void print() {
			System.out.print(this.value);
			if(this.next!=null) {//如果下一个节点还有值的,则继续调用此方法,直到所有节点的值都输出出来
				System.out.print("--->");
				this.next.print();
			}
		}
	}
	public static void main(String args[]) {
		Node n = new Node(1);
		n.add(2);
		n.add(3);
		n.print();
	}
}


输出结果为:
1--->2--->3

对比c语言,c语言是有指针的,可以通过next直接指向下个数据的地址;java是不存在指针的,这是和c语言的一个大的区别,java是通过在类里面包含下一个节点类,一层嵌套一层,有点递归的感觉

链表的反序

电脑自带的画图工具,不怎么会用



图画的不咋地,可能代码更好理解

//链表反序
	public static Node LinkedListReverse(Node head){
		Node pre = null;//用来接收head.next,使链表的方向反过来,
		Node next = null;//保存head.next的值,将来赋值给head节点。使head可以往右移动
		while(head!=null) {//当head为空时,说明pre已经到了链表的尾部了,此时pre就是新的头节点
			next = head.next;//保存下一个节点,不保存的话,如果我们找不到这个节点,它就会被jvm的垃圾回收机制给回收了
			head.next = pre;//将链表的方向反过来
			pre = head;//将pre节点右移动一位
			head = next;//将head节点右移动一位
		}
		return pre;//返回一个新的头节点
	}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997518.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号