阻塞优先级队列java实现 阻塞优先级队列(Blocking Priority Queue)是一种数据结构,它具备队列的特性,同时支持元素的优先级排序。与普通的优先级队列不同,阻塞优先级队列在队列为空时,从队头获取元素或在队列已满时向队列添加元素的操作会被阻塞,直到条件满足。在这里将用java实现阻塞优先级队列,当中会涉及到多线程锁的知识点。
检测单链表环并返回环节点 该算法又称为龟兔快慢指针算法,即创建两个指针,fast和slow指针,slow每次走一步,fast指针每次走两步,当他们相遇了则存在环,反之fast指针到了尾部则无环。当相遇的时候,slow指针回到头结点位置,fast指针不动。开始第二次循环,fast和slow都每次走一步,当两个节点相遇时的节点即为环节点位置。
优先级队列完全二叉树实现 废话不多说,直接上干货。完全二叉树是一种特殊的二叉树,具有一些特定的性质。完全二叉树是一棵二叉树,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。除了最后一层,其他所有层的节点都必须是满的,即每一层从左到右都有节点。如果最后一层不是满的,那么节点都尽量靠左排列。如果有若干节点在最后一层,它们只能出现在最左边的连续位置,不能留有空隙。即从左到右填充节点,不允许在最后一层中出现中间有空缺的情况。这些性质保证了完全二叉树在数组中的存储方式是高效的,因为它可以通过数组索引直接定位到某个节点。
python实现栈的两种方式 栈(Stack)是一种基于先进后出(LIFO)原则的数据结构。栈的操作主要包括入栈(Push)和出栈(Pop)。栈通常用于在算法中实现递归、解决括号匹配问题、追踪函数调用等场景。在这里链表和数组都将用这个节点来作为存储数据的节点。
单链表的基础操作与常见算法实现 单链表是一种基础的数据结构,虽然在平时的开发中较少用到,但我个人而言,学习单链表是从数据结构入门的一个好开端,毕竟是比较简单,而且在算法代码的练习中,总能不知不觉地感受到指针与内存地址的存在。链表是一种物理存储上非连续,数据元素的逻辑顺序通过链表中的指针链接次序,实现的一种线性存储结构。链表由一系列的节点组成,节点动态生成。在单链表中,单个节点由存储元素的数据域与指向下一个节点地址的指针组成。对单链表的操作即建立在对链表中节点的指针操作。(在这里只演示不带哨兵模式情况下的单链表)
博客网站的文章推荐思路及其算法实现 首先定义好推荐数据的依据,对文章数据库中设置keyWord字段,用于存储文章的话题或者标签,每个文章存储的话题有多个由发布文章时由作者设定,以下为数据库存储文章标签的字段。做了一个博客网站,基本功能就是实现用户查找文章,查看文章内容。