数据结构
2016-05-23 16:31
495 查看
栈
数据项入栈和出栈的时间复杂度都为常数O(1).栈操作所耗的时间不依赖于栈中数据项的个数。栈只允许访问一个数据项:即最后插入的数据项(后进先出),实现方式是数组。在java中,Stack是Vector的子类,它的几个重要的方法是pop,peek,push。
pop方法
/** 移除栈顶的元素,并返回这个元素。 / public synchronized E pop() { E obj; int len = size(); obj = peek(); removeElementAt(len - 1); return obj; } public synchronized void removeElementAt(int index) { modCount++; if (index >= elementCount) { throw new ArrayIndexOutOfBoundsException(index + " >= " + elementCount); } else if (index < 0) { throw new ArrayIndexOutOfBoundsException(index); } int j = elementCount - index - 1; if (j > 0) { System.arraycopy(elementData, index + 1, elementData, index, j); } elementCount--; elementData[elementCount] = null; /* 把出栈的对应位置的值置为null ,指针下移*/ }
peek()方法
查看栈顶的元素 public synchronized E peek() { int len = size(); if (len == 0) throw new EmptyStackException(); return elementAt(len - 1); }
push()方法
添加一个元素到栈顶 public E push(E item) { addElement(item); return item; }
队列
数据项入栈和出栈的时间复杂度都为常数O(1).通常是先进先出(FIFO),如果是优先级队列,会根据提供的比较器或元素的自然顺序进行排序。不管使用哪种排序,队首的元素都可以通过remove或者poll进行移除。先进先出的队列,所有新的元素会被添加到队尾,其他类型的使用不同的添加规则。实现的队列必须要指定排序的规则。
在不违反容量限制的情况下将指定元素添加到队列,如果添加成功返回true,如果没有足够的空间会抛出IllegalStateException异常。 boolean add(E e);
在不违反容量限制的情况下将指定元素添加到队列,当使用容量限制队列,这种方法要优于add(),添加成功返回true,失败则返回false。 boolean offer(E e);
检索并移除队首元素。如果队列为空,会抛出NoSuchElementException异常。 E remove();
检索并移除队首元素。如果队列为空,返回null。 E poll();
检索但是并不删除队首元素,如果队列为空,抛出NoSuchElementException异常。 E element();
检索但是并不删除队首元素,如果队列为空,返回null。 E peek();
相关文章推荐
- 数据结构之排序再学习
- 数据结构之排序再学习
- 数据结构之排序再学习
- 数据结构之排序再学习
- 数据结构之排序再学习
- 数据结构之排序再学习
- 数据结构之排序再学习
- 数据结构之排序再学习
- 数据结构之排序再学习
- 数据结构之排序再学习
- 数据结构之排序再学习
- 数据结构之排序再学习
- 数据结构之排序再学习
- 数据结构之排序再学习
- 数据结构之排序再学习
- 数据结构之排序再学习
- 数据结构和算法 – 6.构建字典: DictionaryBase 类和 SortedList 类
- 【1139】数据结构上机测试2-2:单链表操作B
- 【1138】数据结构上机测试2-1:单链表操作A
- [SCU 4513] 先锋看烟花 (数据结构优化DP)