
将堆栈对象用作动态数组进行处理 - MATLAB开发。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
这里所实现的栈对象旨在解决动态数组问题的一个部分方案。 普遍已知,在 MATLAB 数组中添加元素通常效率较低,例如:
```matlab
tic; v=[]; for i=1:1e5, v=[v,i]; end; toc; % O(n^2),大约 30 秒
tic; v=zeros(1e5,1); 对于 i=1:numel(v), v(i)=i; end; toc; % O(n),大约 0.004 秒
```
在某些应用程序中,数组的最终长度可能是不确定的。 为应对这种情况,一种有效的解决方案是利用栈对象。 栈是一种链式数据结构,其核心特征包括一个顶端元素和一个指向下层栈顶的指针。 在本例中,它被实现为一个嵌套的元胞数组:`s = {}` (表示空栈) 或 `s = {x, s1}`,其中 `s1` 代表另一个栈。 具体来说,`push(i, s)` 函数会将元素 `i` 添加到栈 `s` 的顶部。 最后,使用 `stack2mat(s, 1e5)` 函数将栈的内容转换为矩阵 `w`。 通过比较原始向量 `v` 和转换后的矩阵 `w` 的相等性 (`isequal(v, w)`) 可以验证该方法的正确性。
全部评论 (0)
还没有任何评论哟~


