Java中单链表基础

本文介绍了Java中单链表的基本概念,包括单链表的节点结构,如何建立链表,链表的遍历方法,以及如何根据节点查询内容。通过具体的代码实现和测试结果,详细阐述了单链表的操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.单链表的基础结构节点`

private class Node{
        Node next;
        int x;
        Node(int p) {
            this.x= p;
        }
		public Node() {
		}
    }

2.建立单链表

public Node head = new Node();
	public int size;
	 public void add(int t) {
		//建立单链表
	        Node temp = head;
	        while (temp.next != null) {
	            temp = temp.next;
	        }
	        temp.next = new Node(t);
	        size++;
	    }

3.单链表的遍历

public void printData() {
	            //把第一个节点给临时节点temp,让temp遍历
	            Node temp = head;
	            while (temp != null) {
	                temp = temp.next;
	                System.out.print(temp.p.latitude+" ");
	                if(temp.next==null)//防止空指针
	                	break;
	        }
	            System.out.println();
	    }

4.根据某个节点查询内容

public int get(int i) {
		//查询链表的第i个节点的内容
        if (i < 0 || i > size - 1) {
            throw new ArrayIndexOutOfBoundsException("获取的位置不合法");
        } else {
            //把第一个节点给临时节点temp,让temp遍历
            Node temp = head;
            //counter用来计数,找到i在链表里的节点位置,头结点不算链表的真实节点,所以从-1开始计数
            int counter = -1;
            while (temp != null) {
                if (counter == i) {
                    return temp.x;
                }
                temp = temp.next;
                counter++;
            }
        }
		return 0;
    }

完整代码

class MyNode
{
	//头结点,头结点是为了方便在下面的方法中遍历链表用的
    public Node head = new Node();
	public int size;
	 public void add(int t) {
		//建立单链表
	        Node temp = head;
	        while (temp.next != null) {
	            temp = temp.next;
	        }
	        temp.next = new Node(t);
	        size++;
	    }
	public void printData() {
		//遍历单链表,打印出单链表的数据
	            //把第一个节点给临时节点temp,让temp遍历
	            Node temp = head;
	            while (temp != null) {
	                temp = temp.next;
	                System.out.print(temp.x+" ");
	                if(temp.next==null)//防止空指针
	                	break;
	        }
	            System.out.println();
	    }
	public int get(int i) {
		//查询链表的第i个节点的内容
        if (i < 0 || i > size - 1) {
            throw new ArrayIndexOutOfBoundsException("获取的位置不合法");
        } else {
            //把第一个节点给临时节点temp,让temp遍历
            Node temp = head;
            //counter用来计数,找到i在链表里的节点位置,头结点不算链表的真实节点,所以从-1开始计数
            int counter = -1;
            while (temp != null) {
                if (counter == i) {
                    return temp.x;
                }
                temp = temp.next;
                counter++;
            }
        }
		return 0;
    }
	private class Node{
        Node next;
        int x;
        Node(int p) {
            this.x= p;
        }
		public Node() {
			// TODO Auto-generated constructor stub
		}
    }
}
public class Test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int []num= {0,1,2,3,4,5,6};
		MyNode m=new MyNode();
		for(int i=0;i<num.length;i++)
		{
			m.add(num[i]);
		}
		//测试单链表中的数据
		System.out.print("单链表中的数据为:");
		m.printData();
		//测试某个节点的内容
		System.out.println("节点三号的内容为:"+m.get(3));
	}

}

测试结果
测试结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值