再具体叙述一下我的想法:
这个数据结构如果条目不足100,后进先出;如果条目超过一百条了,后面进来的条目会把前面进来的条目挤掉(比如第101条条目进入之后,第一条条目会被删除,第二条条目就会变成第一条)。
请问有没有这样的一种数据结构呢?
队列就很符合你的这个设计思路,需要你自己去实现一个固定长度的队列,在达到这个固定长度的时候,先出队,再入队。
具体参考:http://www.2cto.com/kf/201511/449556.html
循环队列
可以实现………
定义一个100长度的数组
定义一个变量i
每次添加数据i+1
如果i>100,i=0
我想队列应该很符合你的要求。就是兄弟你好像描述的不太清楚,后来的把前面的挤出去,这应该是一个先进先出的概念吧。数据结构里面的队列就是和堆栈是相反的:堆栈是先进后出,那么队列就是先进先出。
List remove add
1、这种数据结构是没有现成的
2、完全可以已栈为基础实现题主说的这种结构
队列符合,只要制定它的长度为100,超过就挤出
public static String[] stack = new String[10];
public static String[] $stack = new String[10];
public static void put(String item) {
int len = stack.length;
System.arraycopy(stack,0,$stack,0,stack.length);
for (int i = 1 ; i < len; i++) {
stack[i] = $stack[i-1];
}
stack[0] = item;
}
我测试定义了10个长度,你可以用100个试一下
自己定义一种队列,实现你的思路
你说的其实就是队列 设置一个长度为100的队列就OK
队列,这样的数据结构一般的编程语言都可以实现的,百度一下很多示例的
数据结构里面的队列就是和堆栈是相反的:堆栈是先进后出,那么队列就是先进先出。
只是按照你表述的来看,这个“数据结构”根本就不会超过100,永远都是进来一个,立马出去,死循环。。
如果你实际上是判断了进来的数据,是否满足当前要存储的条件,再存储的话,那么有两种方法:
1.用队列queue——初始化队列长度为100,条件判断完后,再把数据放进来(不可以先放进来,判断不满足后再移出去,队列只允许数据从一侧进,另一侧出),满100后,会自动挤掉最先进入的数据;
2.用list(效率低,不推荐)——条件判断完,把数据放进来(可以先放进来,判断不满足后再移出去),每次操作完判断当前list的长度,不够100继续下一步;满100后,list.remove(0),在add当前数据,依次循环。