数据结构——链表

本文介绍了链表的基本概念和结构,重点讨论了无头单向非循环链表。通过创建Node类表示节点,实现了链表的头插法、尾插法、获取链表长度、插入、查找、删除和打印链表等操作。
摘要由CSDN通过智能技术生成

链表的概念和结构

链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。
(1).实际中链表的结构非常多样

  • 带头,不带头
  • 单向,双向
  • 循环,非循环

无头单向非循环链表

在这里插入图片描述

  1. 每个节点都会有两个域,一个是值域用来存放数据,另一个节点域用来存放下一个节点的地址,这样让每个节点都连起来。(假设0x222是数据2的地址,那么数据1的节点域存放0x222就将两个节点链接起来)。

那么如何实现一个链表呢?
1.首先我们创建一个类Node代表节点

class Node{
   
	public int val; //表示值域
	public Node next; //表示节点域 没有初始化默认值为null
	//带一个参数的构造方法
	//为什么不给两个参数,因为你在new节点的时候不知道下一个节点是谁
	public Node(int val){
   
		this.val = val;
	}
}

2.链表的实现:头插法

//看链表是不是为空,定义一个头结点
public Node head = null;
public void addFirst(int data){
   
	//首先通过传过来的数据new一个节点
	Node node = new Node(data);
	//判断链表是否为空
	if(this.head == null){
   
		//如果为空,那么只需要将head指向node;
		this.head = node;
		return;//结束方法
	}
	//不为空
	Node cur = this.head;//让cur指向头结点
	this.head = node;//再让头节点指向新的节点node
	node.next = cur;//最后修改node的指向,让他的节点域存储cur的地址(也就是原始头结点的地址)
}

3.尾插法

public voi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值