从零开始JAVA数据结构学习笔记(二)

对java链表LinkedList部分自带功能进行了理解与实验

import java.util.LinkedList;

public class Demo02 {
	public static void main(String[] args) {
		LinkedList<Number> list = new LinkedList<Number>();//定义链表list
		LinkedList<Number> list2 = new LinkedList<Number>();//定义链表list2
		list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);
		list.add(6);list.add(7);list.add(8);list.add(9);list.add(10);
		list2.add(10);list2.add(9);list2.add(8);list2.add(7);list2.add(6);
		list2.add(5);list2.add(4);list2.add(3);list2.add(2);list2.add(1);
		System.out.println(list);
		System.out.println(list2);

运行结果

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

int a1 = (int) list.getFirst();//取得链表第一个元素
		System.out.println(a1);
		
int a2 = (int) list.getLast();//取得链表最后一个元素
		System.out.println(a2);
		
list.removeFirst();//去除链表中第一个元素
		System.out.println(list);

运行结果

1
10
[2, 3, 4, 5, 6, 7, 8, 9, 10]

list.removeLast();//去除链表中最后一个元素
		System.out.println(list);
		
list.addFirst(1);//从头添加元素数字1
		System.out.println(list);
		
list.addLast(10);//从尾添加元素数字10
		System.out.println(list);

运行结果

[2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

boolean a3 = list.contains(3);//判断数字3是否存在在链表list中
boolean a4 = list.contains(100);//判断数字100是否存在在链表list中
		System.out.println(a3);
		System.out.println(a4);
		
int a5 = list.size();//统计链表的长度
		System.out.println(a5);
		
list.add(1,2.5 );//在链表第二个位置插入数字2.5
		System.out.println(list);

运行结果

true
false
10
[1, 2.5, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Number a6 = (Number) list.remove(1);//去除链表中第1位置的数字
		System.out.println(a6);
		System.out.println(list);
		System.out.println(list2);
		
boolean a7 = list.addAll(6, list2);//将list2的所有节点加入到list的第六个节点位置
		System.out.println(a7);
		System.out.println(list);
		
list2.clear();//清空list2中所有节点
		System.out.println(list2);

运行结果

2.5
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
true
[1, 2, 3, 4, 5, 6, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 7, 8, 9, 10]
[]

int a8 = (int) list.get(2);//得到第二个节点元素的数字
		System.out.println(a8);
		list.set(2, 100);
		
System.out.println(list);//讲链表list中第二个节点的元素数字改成100
		list.add(2, 99);
		
System.out.println(list);//在链表list中第二个节点位置加入数字99
		list.remove(2);

运行结果

[1, 2, 100, 4, 5, 6, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 7, 8, 9, 10]
[1, 2, 99, 100, 4, 5, 6, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 7, 8, 9, 10]
[1, 2, 100, 4, 5, 6, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 7, 8, 9, 10]

System.out.println(list);//将链表list中第二个节点位置数字移除
		boolean a9 = list.isEmpty();//判断list是否为空
		boolean a10 = list2.isEmpty();//判断list2是否为空
		System.out.println(a9);
		System.out.println(a10);
		
int a11 = list.indexOf(2);//输入一个数字确定其在链表中第一个的位置
		System.out.println(a11);
		
int a12 = list.lastIndexOf(2);//输入一个数字确定其在链表中最后一个的位置
		System.out.println(a12);

运行结果

false
true
1
14

int a13 = (int) list.peek();//取得链表中第0个节点的元素
		System.out.println(a13);
		
int a14 = (int) list.element();//取得链表中第0个节点的元素
		System.out.println(a14);
		
int a15 = (int) list.pollFirst();//取得链表中第0个节点的元素并去除
		System.out.println(a15);
		System.out.println(list);

运行结果

1
1
1
[2, 100, 4, 5, 6, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 7, 8, 9, 10]

int a16 = (int) list.pollLast();//取得链表中最后一个节点的元素并去除
        System.out.println(a16);
  		System.out.println(list);
		
list.offer(11);//在链表中继续加入11这个元素,返回类似add()
		System.out.println(list);
		
list.offerFirst(1);//在链表头加入1这个元素
		System.out.println(list);

运行结果

10
[2, 100, 4, 5, 6, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 7, 8, 9]
[2, 100, 4, 5, 6, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 7, 8, 9, 11]
[1, 2, 100, 4, 5, 6, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 7, 8, 9, 11]


list.offerLast(12);//在链表末尾加入11这个元素
		System.out.println(list);
		
list.removeFirstOccurrence(2);//去除链表list中元素为数字2的第一个节点
		System.out.println(list);
		
list.removeLastOccurrence(2);//去除链表list中元素为数字2的最后一个节点
		System.out.println(list);

运行结果

[1, 2, 100, 4, 5, 6, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 7, 8, 9, 11, 12]
[1, 100, 4, 5, 6, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 7, 8, 9, 11, 12]
[1, 100, 4, 5, 6, 10, 9, 8, 7, 6, 5, 4, 3, 1, 7, 8, 9, 11, 12]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值