10.16

今天的数据结构学了栈和列表,它们的差别还挺明显的,适用的情况也不太一样。栈就特别讲究 “后进先出”,跟咱们平时叠盘子似的,只能从最上面放或者拿东西,核心就三个操作:push 加元素、pop 删元素、peek 看最上面的元素,这几个操作速度都特别快,时间复杂度都是 O (1)。实际用的时候,它这种 “只能操作顶部” 的限制反而成了优点,比如做括号匹配题,遇到左括号就进栈,遇到右括号就把栈顶的拿出来配对,很快就能判断对不对;还有函数调用的时候,系统也是用栈来保存上下文,不然函数执行完都不知道该回到哪儿;就连咱们用软件时的撤销功能,也是把每步操作存进栈里,想撤销就把最后一步取出来,逻辑特别清楚。不过栈也有缺点,不能随便访问中间的元素,要是想找不是栈顶的元素,就得把上面的全拿出来,太不方便了。
列表的话,我学的动态列表用着更灵活,它也是线性存储的,元素按顺序排好,还能通过索引直接找到想要的元素。常用的操作有 add 加元素、remove 删元素、get 通过索引取元素,在列表尾部加或者删元素的时候,速度也快,时间复杂度是 O (1),但要是在中间插元素或者删元素,就得移动后面的一大串元素,速度就慢多了,时间复杂度成了 O (n)。平时开发里列表用得还挺多的,比如存用户信息,想找某个用户,直接用索引就能调出来;做购物车功能的时候,也能随时在任意位置加商品或者删商品。不过列表太灵活了,没有栈那种 “后进先出” 的约束,要是遇到必须按这个规则来的场景,用列表手动控制顺序的话,不仅容易出错,效率也不高。
总的来说,栈的 “限制” 是为了更高效地解决特定问题,列表的 “灵活” 则适合需要自由操作数据的情况。现在学下来,我觉得关键还是得搞清楚它们各自的特点,做题或者做项目的时候,根据实际需求选对结构,才能把它们的作用发挥好。

posted @ 2025-10-16 21:05  姜乐融  阅读(4)  评论(0)    收藏  举报