数据结构与算法
qq_44562987
这个作者很懒,什么都没留下…
展开
-
外卖店优先级---模拟
“饱了么”外卖系统中维护着 N 家外卖店,编号 1 ∼ N。每家外卖店都有 一个优先级,初始时 (0 时刻) 优先级都为 0。每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 1,最低减 到 0;而如果外卖店有订单,则优先级不减反加,每有一单优先级加 2。如果某家外卖店某时刻优先级大于 5,则会被系统加入优先缓存中;如果 优先级小于等于 3,则会被清除出优先缓存。给定 T 时刻以内的 M 条订单信息,请你计算 T 时刻时有多少外卖店在优 先缓存中。【输入格式】第一行包含 3 个整数 N、原创 2020-09-25 22:02:10 · 300 阅读 · 0 评论 -
链表部分之双链表
与单链表不同的是,双链表多了一个指向前面地址域的变量。因此既可以对链表进行顺序遍历,也可以倒序遍历。添加元素到末尾:找到链表的最后一个元素,将next指向新元素,并将新元素的pre指向之前找到的那个最后的那个元素。这里为不带头节点的双链表temp:辅助变量 //当退出循环时,temp指向链表的最后 temp2.next=newNode; newNode.pre=temp2; 按顺序添加:找到要添加位置的前一个元素,将元素插入即可。 //先右后左 newNode.原创 2020-07-20 16:27:08 · 69 阅读 · 0 评论 -
链表部分之循环单链表
循环单链表与单链表不同的是最后一个元素不为null,而是指向开头的第一个元素,形成一个环。若temp=head,且没有头节点。判满条件:temp.next=head判空条件:head=null;添加元素:若为第一个元素,head=newNode;head.next=head;//指向自己 temp=head;若不是第一个元素:temp.next=newNode; newNode.next=head; temp=newNode;约瑟夫问题:简化说法,有K个小孩,编号为1,2,3,…,k,围成一个原创 2020-07-20 13:17:51 · 265 阅读 · 0 评论 -
链表部分之单链表
链表的各个节点的内存地址是不连续的。结点:由该节点的数据域和下一个节点的地址域组成头指针:表示指向链表的第一个节点(这里可以理解为指针,但是java没有指针);链表有头节点时,指向头节点,没有头节点时指向第一个有数据的节点。头节点:一般不存数据,位于链表的第一个位置,有些链表没有头节点,区分就看这个节点存值没有,有些有,实际情况实际分析。下面说的是有头节点的情况.这里给出的是根据韩老师写的水浒英雄排行那个案例的一部分,测试没给。附上地址:数据结构与算法(java)链表类:class HeroN原创 2020-07-15 22:14:32 · 105 阅读 · 0 评论 -
稀疏数组
含义:稀疏数组一般是将一个数组中有意义的值的信息存放在另一个数组中。结构:数组的行数为有意义的值加1,列数一般为3,分别表示横向下标,纵向下标,值。第一行一般存原始数组的行数,原始数组的列数,以及有意义的值的个数。根据情况可以调整优点:可以对数据进行压缩。实现代码:package day1;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java..原创 2020-07-13 18:51:43 · 193 阅读 · 0 评论 -
数组模拟队列
这里写的是环形队列和非环形队列。非环形队列:只可以使用一次,且存在“假溢出”问题。一种情况是删除元素时,front后移,再添加元素时rear后移,当rear移到最后一个元素时,根据条件,队列已满,但是数组前面移除元素的空位并没有被用,并不是真正的队列满。非环形数组模拟队列: import java.util.Scanner; import javax.management.RuntimeErrorException; public class Queue { public static原创 2020-07-13 18:41:13 · 71 阅读 · 0 评论