Java中(Queue、Deque、Stack)的特点及遍历方式

一、Queue

Queue是单端队列,遵循(FIFO)先进先出原则,最早进去的最先出来。

有限队列:有界限,大小长度受限制,常见实现类ArrayBlockingQueue

无限队列:无界限大小限制,常见实现类LinkedList

遍历方式(3种)

1.增强for循环

		for (Object o : queue) {
			System.out.println(o);
		}

2.Iterator迭代器

		Iterator it = queue.iterator();
		while (it.hasNext()) {
			System.out.println(it.next());
		}

3.while循环条件判断

		while (!queue.isEmpty()) {
			System.out.println(queue.poll());
		}

二、Deque

Deque是双端队列(Double Ended Queue),允许两头都进,两头都出。

1.增强for循环

		for (Object o : de
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
邻接表是一种图的表示方法,它用链表来表示每个顶点相邻顶点的集合,具体来说,邻接表每个顶点都对应一个链表,链表存储该顶点与其它顶点相邻的边的信息,这种方法可以节省存储空间,适用于稀疏图。 以下是邻接表的示例图: ``` 1 -- 2 -- 3 | | 4 -- 5 -- 6 ``` 对应的邻接表如下: ``` 1 -> 2 -> 4 2 -> 1 -> 3 -> 5 3 -> 2 -> 6 4 -> 1 -> 5 5 -> 2 -> 4 -> 6 6 -> 3 -> 5 ``` 图的遍历是指按一定的规则依次访问图的所有顶点,常用的有深度优先遍历(DFS)和广度优先遍历(BFS)。 深度优先遍历的基本思想是从一个顶点开始,尽可能深地探索每个分支,直到到达最深处,然后回溯到前一个节点,再继续探索其他分支。具体实现可以使用递归或栈来实现。 以下是深度优先遍历的示例代码: ```python def dfs(graph, start): visited = set() # 记录已访问的节点 stack = [start] # 用栈来实现深度优先遍历 while stack: node = stack.pop() # 弹出栈顶节点 if node not in visited: visited.add(node) print(node, end=' ') for neighbor in graph[node]: stack.append(neighbor) ``` 对于上述示例图,从顶点1开始进行深度优先遍历,输出结果为:1 4 5 2 3 6。 广度优先遍历的基本思想是先访问起始顶点的所有邻接顶点,再逐层向外访问其它顶点,具体实现可以使用队列来实现。 以下是广度优先遍历的示例代码: ```python from collections import deque def bfs(graph, start): visited = set() # 记录已访问的节点 queue = deque([start]) # 用队列来实现广度优先遍历 while queue: node = queue.popleft() # 弹出队列头节点 if node not in visited: visited.add(node) print(node, end=' ') for neighbor in graph[node]: queue.append(neighbor) ``` 对于上述示例图,从顶点1开始进行广度优先遍历,输出结果为:1 2 4 3 5 6。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值