[数据结构] java单向链表

第一次使用泛型的方法写单向链表。
链表和数组的区别就是链表的存储位置不一定是连续的,数组的存储位置一定是连续的。
无序链表的增删改查时间复杂度分别为:
增加:O(1);删除O(n);修改O(n);查询O(n)
有序链表和无序链表在查询的时候有些区别
有序链表:
增加:O(n);删除O(n);修改O(n);查询O(n)
下面直接附上代码:
这是一个带头结点无序链表,没有数据的大小顺序
而有序链表需要在插入的时候做判断,修改后也要保证有序

public class LinkList<T> {
	//定义数据域,数据和下一个LinkList
	public T data;
	public LinkList<T> next;
	/**
	 * 增加
	 * @param data
	 */
	public void add(T data){
		//如果下一个数据没有值,就给他赋值;如果有值,就让下一个结点调用add方法
		if (next==null) {
			next=new LinkList<T>();
			next.data=data;
		}
		else{
			next.add(data);
		}
	}
	/**
	 * 删除
	 * @param data
	 */
	public void delete(T data) {
		if (next==null) {
			return;
		}
		LinkList<T> temp=next;
		if (temp.data==data) {
			next=temp.next;
			temp.next=null;
		}else{
			next.delete(data);
		}
	}
	/**
	 * 查找
	 * @param data
	 * @return
	 */
	public LinkList<T> find(T data){
		if (next==null) {
			return new LinkList<T>();
		}
		if (next.data.equals(data)) {
			return next;
		}else{
			return next.find(data);
		}
	}
	/**
	 *	更新,只需查找直接修改数据即可
	 * @param data源数据
	 * @param newdata新数据
	 */
	public void update(T data,T newdata){
		LinkList<T> reusult=find(data);
		reusult.data=newdata;
	}
	@Override
	public String toString() {
		return "List [data=" + data + ", next=" + next + "]";
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
			LinkList<Integer> list=new LinkList<Integer>();
		list.add(5);
		list.add(7);
		list.add(99);
		list.add(34);
		list.add(-7);
		System.out.println(list.toString());
		list.delete(99);
		System.out.println(list.toString());
		System.out.println(list.find(8));
		list.update(5, 500);
		System.out.println(list.toString());
	}
	}

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值