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

头插法反转整个单链表(java完整代码)

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

头插法反转整个单链表(java完整代码)

头插法:节点插入到链表的头部,也就是addFirst()方法。

单链表:一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置)。参照代码中的Node内部类。

代码中方法介绍:

add():插入到链表尾部。

addFirst():头插法插入到链表头部。

reverseAll():头插法反转整个链表。

public class SingleLinkedList {
	//头结点
	private Node head;
	//节点内部类 单链接只包含数据和next的引用
	private static class Node{
		int data;//节点数据
		Node next;//单链表只有next没有 prev
		Node(int data,Node next){
			this.data = data;
			this.next = next;
		}
	}
	//正常添加,添加成为最后一个节点
	public void add(int data){
		if(head == null){//没有节点 
			head = new Node(data, null);
		}else{
			Node temp = head;
			while (true) {
				if(temp.next == null){
					temp.next = new Node(data, null);;
					break;
				}else{
					temp = temp.next;
				}
			}
		}
	}
	//头插法 相当于addFirst。节点插入到链表头部
	public void addFirst(int data){
		if(head == null){//没有节点 
			head = new Node(data, null);
		}else{
			Node cur = new Node(data, null);
			
			//当前节点的next指向头结点
			cur.next = head;
			//当前新建的节点成为头结点。
			head = cur;
		}
	}
	//头插法反转整个链表
	public void reverseAll(){
		Node reverseHead =  null;//反转的head
		Node cur = head;
		Node next = null;
		while(cur != null){//每次遍历相当于addFirst(cur); 即 addFirst 中的 newhead == cur;
			//因为下面第二行代码就将 cur.next替换了。所以了保存当前节点的下一个节点
			next = cur.next;
			
			cur.next = reverseHead;//当前节点的下一个指向了反转的头结点
			reverseHead = cur;//当前节点替换为新的反转头结点
			
			
			cur = next;//继续遍历下一个节点
		}
		//反转的头节点替换成新的头节点
		head = reverseHead;
	}
    //打印整个链表
	public void showAll(){
		if(head == null){
			System.out.println("单链表为空");
		}else{
			Node temp = head;
			while (true) {
				System.out.println("节点数据为"+temp.data);
				if(temp.next == null){
					break;
				}else{
					temp = temp.next;
				}
			}
		}
	}
	
	public static void main(String[] args) {
		SingleLinkedList list = new SingleLinkedList();
		list.add(1);
		list.add(2);
		//添加顺序为1,2
		list.reverseAll();
		//反转后打印顺序为2,1
		list.showAll();
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/877112.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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