032_使用ArrayDeque模拟栈结构

import java.util.ArrayDeque;
import java.util.Iterator;

/**
 * 使用ArrayDeque模拟栈结构
 */
public class DequeStack<E> {
	private ArrayDeque<E> stack = new ArrayDeque<E>();
	
	/**
	 * 压zhan
	 * @param e
	 * @return
	 */
	public boolean push(E e) {
		return stack.offerLast(e);
	}
	
	/**
	 * 弹栈
	 * @return
	 */
	public E pop() {
		return stack.pollLast();
	}
	
	/**
	 * 栈元素个数
	 * @return
	 */
	public int Size() {
		return stack.size();
	}

	/**
	 * 栈是否为空
	 * @return
	 */
	public boolean isEmpty() {
		return stack.isEmpty();
	}
	
	/**
	 * 遍历栈
	 * @return
	 */
	public Iterator<E> iterator(){
		return stack.iterator();
	}
	
}

 

### 深度优先搜索中LinkedList与ArrayDeque性能对比 在实现深度优先搜索(DFS)时,选择适当的数据结构对于算法效率至关重要。两种常用的选择是`LinkedList`和`ArrayDeque`。 #### 使用LinkedList作为 `LinkedList`实现了`Deque`接口,在理论上可以当作双端队列来使用。然而,由于其内部基于链表结构,每次访问元素都需要遍历节点直到目标位置。这使得随机存取操作的时间复杂度为O(n),其中n表示列表长度[^3]。当执行大量入和出操作时,这种特性可能导致较低的整体性能表现。 ```java Stack<Integer> stack = new LinkedList<>(); stack.push(startNode); while (!stack.isEmpty()) { int currentNode = stack.pop(); // Process current node... } ``` #### 使用ArrayDeque作为 相比之下,`ArrayDeque`是一种更高效的双向队列实现方式。它通过循环数组的方式存储数据项,并且支持常数时间内的两端插入/删除操作(O(1))。因此,在大多数情况下,`ArrayDeque`能够提供更好的迭代速度以及更低的空间开销[^4]。 ```java Deque<Integer> deque = new ArrayDeque<>(); deque.addFirst(startNode); // push operation while (!deque.isEmpty()){ Integer currentNode = deque.removeFirst(); // pop operation // Process current node... } ``` 综上所述,虽然两者都能满足基本功能需求,但在实际应用中推荐采用`ArrayDeque`来进行DFS的模拟,因为它的平均情况下的读写效率更高,更适合处理大规模图结构中的遍历任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值