Java单链表的简单操作实现教程_代码知识_七洗推广网

Java单链表的简单操作实现教程

#代码知识 发布时间: 2026-01-12
目录
  • 前言
  • 一、基本实现思路
  • 二、代码实现
    • 1.定义结点类
    • 2.定义链表类
    • 3.测试调用
    • 4.结果
  • 总结

    前言

    用Java实现单链表的简单操作,阅读本文和上一篇文章体会Java中类与C++中结构体指针的区别

    提示:以下是本篇文章正文内容,下面案例可供参考

    一、基本实现思路

    • 构造结点类
    • 构造链表类
    • 具体测试实现

    二、代码实现

    1.定义结点类

    package list.test01;
    /*
     *定义结点类
    */
    public class Node {
    	private int data;
    	public Node next;
    	public Node(int data) {
    		this.data = data;
    	}
    	
    	public int getData() {
    		return data;
    	}
    
    	public void setData(int data) {
    		this.data = data;
    	}
    
    	public void display() {
    		System.out.println("data="+data);
    		
    	}
    	
    }
    

    2.定义链表类

    package list.test01;
    public class LinkList {
    	//构造头结点
    	private Node first;
    	//记录结点位置
    	private int pos=0;
    	
    	public LinkList() {
    		this.first=null;
    	}
    	/**
    	 * 插入一个头结点
    	 */
    	public void input(int data) {
    		Node node=new Node(data);
    		node.next=first;
    		first=node;
    	}
    	/*
    	 * 删除头结点 并返回头结点
    	 */
    	public Node delete() {
    		Node tmpeNode=first;
    		first =tmpeNode.next;
    		return first;
    	}
    	/*
    	 * 在任意位置添加结点
    	 */
    public void addList(int i,int data) {
    	Node node=new Node(data);
    	Node useNode=first;
    	Node preNode=first;
    	while (i!=pos) {
    		preNode=useNode;
    		useNode=useNode.next;
    		pos++;
    	}
    	
    	node.next=useNode;
    	preNode.next=node;
    	pos=0;
    }
    /*
     * 在任意位置删除结点
     */
    public Node delete(int i) {
    	Node preNode=first;
    	Node useNode = first;
    	if(first==null) {
    		return first;
    	}
    	while(i!=pos) {
    		preNode=useNode;
    		useNode=useNode.next;
    		pos++;
    	}
    	preNode.next=useNode.next;
    	pos=0;
    	return useNode;
    }
    /*
     * 头插法建立链表
     */
    public void Initlist(int a[]) {
    	for (int i = 0; i < a.length; i++) {
    		Node node=new Node(a[i]);
    		node.next=first;
    		first=node;
    	}
    }
    /*
     * 尾插法建链表
     */
    public void InitList2(int a[]) {
    	Node qNode=first;
    	for (int i = 0; i < a.length; i++) {
    		Node node=new Node(a[i]);
    		qNode.next=node;
    		qNode=node;
    	}
    
    }
    /*
     * 查询结点信息为data的位置
     */
    public int findList(int data) {
    	Node useNode=first;
    	if(first==null) {
    		System.out.println("该链表为空!");
    		return 0;
    	}
    	while(useNode.getData()!=data) {
    		useNode=useNode.next;
    		pos++;
    	}
    	int i=pos;
    	pos=0;
    	System.out.println("该元素在第"+i+"位置");
    	return i;
    }
    /*
     * 显示链表中的结点信息
     */
    public void displayall() {
    	Node useNode=first;
    	while(useNode!=null) {
    		useNode.display();
    		useNode=useNode.next;
    	}
    	System.out.println();
    	}
    }
     
     
    

    3.测试调用

    package list.test01;
    
    public class Test {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		LinkList laLinkList=new LinkList();
    		//检验插入头结点
    		laLinkList.input(10);
    		laLinkList.input(20);
    		laLinkList.input(30);
    		System.out.println("显示插入的三个头结点元素");
    		laLinkList.displayall();
    		//检验任意位置插入结点
    		laLinkList.addList(1, 1);
    		laLinkList.addList(2, 2);
    		laLinkList.addList(3, 3);
    		System.out.println("显示任意位置插入元素的值");
    		//显示结点信息
    		laLinkList.displayall();
    		//删除值为2的结点
    		System.out.println("显示删除功能");
    		Node deleNode=laLinkList.delete(2);
    		System.out.println("===============");
    		//显示删除结点的信息
    		deleNode.display();
    		System.out.println("=============");
    		//显示全部信息
    		laLinkList.displayall();
    		System.out.println("---------------------");
    		System.out.println("下面是查询");
    		//查询元素为3的位置
    		laLinkList.findList(3);
    		System.out.println("---------------------");
    		int a[]= {1,2,3,4,5};
    		LinkList laLinkList2=new LinkList();
    		//头插法建链表
    		System.out.println("下面是头插法建链表");
    		laLinkList2.Initlist(a);
    		laLinkList2.displayall();
    
    		System.out.println("下面是尾插法");
    		LinkList laLinkList3=new LinkList();
    		//先插入一个头结点
    		laLinkList3.input(0);
    		laLinkList3.InitList2(a);
    		laLinkList3.displayall();
    		//Node n1=new Node(20);
    		//n1.display();
    
    	}
    
    }
    
    

    4.结果


    总结

    以上用Java实现了单链表的简单操作,在C、C++里面有结构体、指针等 链表理解较为简单,但是Java里用类去代替结构体的功能,在Java中类是引用型,从而代替指针。以上是初学者对Java单链表的理解,还不是很明白。

    代码知识SEO

    上一篇 : python实现磁盘日志清理的示例

    下一篇 : nuxt 服务器渲染动态设置 title和seo关键字的操作
    品牌营销
    专业SEO优化
    添加左侧专家微信
    获取产品详细报价方案