
对双向链表的学习
发布日期:2021-05-10 14:37:54
浏览次数:8
分类:精选文章
本文共 4942 字,大约阅读时间需要 16 分钟。
������������������
���������������Java������������������������������Double Linked List���������������������������������
������������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������
���������DoubleLinkedNode���������������������������������������������������������������
package com.test;public class DoubleLinkedNode { private int val; public DoubleLinkedNode prev = null; // ��������������������������� public DoubleLinkedNode next = null; // ��������������������������� public DoubleLinkedNode(int val) { this.val = val; } public int getVal() { return this.val; }}���������������������
���������DoubleLinkedList���������������������������������������������������������������������������������������������������������
package com.test;public class DoubleLinkedList { DoubleLinkedNode head = null; // ������������������ public DoubleLinkedList() { // ��������������������������������������������� head = new DoubleLinkedNode(-1); head.prev = head; head.next = head; } // ��������������� public void addFirst(int data) { DoubleLinkedNode node = new DoubleLinkedNode(data); node.prev = head; node.next = head.next; head.next = node; head.prev = node; } // ��������������� public void addLast(int data) { DoubleLinkedNode node = new DoubleLinkedNode(data); node.next = head; node.prev = head.prev; head.prev = node; } // ������������������������0������������������������ public boolean addIndex(int index, int data) { DoubleLinkedNode node = new DoubleLinkedNode(data); int size = size(); // ��������������������� if (index < 0 || index > size) { return false; } // ������������ if (index == 0) { addFirst(data); return true; } // ������������ if (index == size) { addLast(data); return true; } // ������������������ DoubleLinkedNode cur = toFindIndex(index); DoubleLinkedNode prevCur = cur.prev; prevCur.next = node; node.prev = prevCur; node.next = cur; cur.prev = node; return true; } // ������������������ public int size() { int size = 0; for (DoubleLinkedNode cur = head.next; cur != head; cur = cur.next) { size++; } return size; } // ��������������������������� public DoubleLinkedNode toFindIndex(int index) { int i = 0; DoubleLinkedNode cur = head.next; while (i < index) { cur = cur.next; i++; } return cur; } // ������������������������������������ public boolean contains(int key) { for (DoubleLinkedNode cur = head.next; cur != head; cur = cur.next) { if (cur.getVal() == key) { return true; } } return false; } // ��������������������������������������� public void remove(int key) { DoubleLinkedNode cur = toFindNode(key); if (cur == null) { return; } DoubleLinkedNode prevCur = cur.prev; DoubleLinkedNode nextCur = cur.next; prevCur.next = nextCur; nextCur.prev = prevCur; } // ������������������������������ public void removeAll(int key) { while (true) { DoubleLinkedNode cur = toFindNode(key); if (cur == null) { return; } // ������������������ DoubleLinkedNode prev = cur.prev; DoubleLinkedNode next = cur.next; prev.next = next; next.prev = prev; } } // ������������������������ public DoubleLinkedNode toFindNode(int key) { for (DoubleLinkedNode cur = head.next; cur != head; cur = cur.next) { if (cur.getVal() == key) { return cur; } } return null; } // ������������������ public void display() { System.out.println(); // ������������ System.out.print("������:"), System.out.print("["); for (DoubleLinkedNode cur = head.next; cur != head; cur = cur.next) { if (cur.next != head) { System.out.print(cur.getVal() + ","); } else { System.out.print(cur.getVal() + "]"); } } System.out.println(); // ������������ System.out.print("������:"), System.out.print("["); for (DoubleLinkedNode cur = head.prev; cur != head; cur = cur.prev) { if (cur.prev != head) { System.out.print(cur.getVal() + ","); } else { System.out.print(cur.getVal() + "]"); } } System.out.println(); }}
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月02日 17时21分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
LeetCode 637 二叉树的层平均值-简单
2021-05-09
制作横版游戏KillBear第9课:暂停层+屏蔽下层监听
2021-05-10
Redis-day2-五种数据结构类型与数据持久化AOF+RDB
2021-05-10
IOS开发Swif笔记13-初始化
2021-05-10
IOS开发Swift笔记16-错误处理
2021-05-10
【电商吧 - 4】电商场景数值计算那些坑
2021-05-10
Java 天气预报WebService
2021-05-10
Spring中bean的加载过程
2021-05-10
mysql里Date类型的处理
2021-05-10
redis中RDB和AOF的区别
2021-05-10
内核线程、轻量级进程、用户线程的区别和联系
2021-05-10
《STM32从零开始学习历程》——CAN相关结构体
2021-05-10
Dubbo笔记 ② : 架构概述
2021-05-10
ROS参数服务器
2021-05-10
malloc分配0个字节
2021-05-10
vim配置
2021-05-10
原生Javascript实现New方法
2021-05-10
Tomcat中jdk版本与项目版本不一致造成404错误以及Eclipse修改jdk版本
2021-05-10
配置SpringMVC中的视图解析器
2021-05-10