数据结构分为线性结构和非线性结构,常用的线性结构是列表,python里面的列表仅仅是列表(个人理解),如果要用链表的话,python需要自己再定义,但是js可以直接用。
找了一下列表和栈的区别,如下:
列表:
列表: 1、列表中的元素是怎么存储的? 是顺序存储的,是一块连续的内存 2、列表的操作:按下标查找,插入元素,删除元素 python中的列表如何实现? Python中列表的类型可以不同 Python中的列表存放的不是值而是地址,32位机器一个地址占4个字节,地址的长度是固定的 列表长度不固定 Python解释器自动维护的,发现长度不够会新开辟一块内存,把之前的列表进行拷贝 python下标查找和append复杂度是O(1) python列表的插入和删除的复杂度是O(n)
一般来说,python对列表的处理,添加新元素:arr.append(),
js里面是arr.push
栈:
栈(stack)是一个数据集合,可以理解为只能在一端进行插入或删除操作的列表 栈的特点:LIFO 栈的概念:栈顶,栈底 栈的基本操作:(用列表可以实现) 进栈:li.append 出栈: li.pop() 取栈顶: li[-1]
栈的应用:括号匹配问题 '{[()[]{}]}'遇到左括号就入栈,遇到右括号就看栈顶的左括号,把匹配的左括号出栈,匹配完后栈为空说明匹配。
综上,栈就列表,不过是特殊情况的列表。
以下是对队列的认识:
”队列:先进先出。只需要操作线性表的两端。一端只能进入,另一端只能出。队尾进,队首出。有顺序存储和链式存储两种。队列假溢出是因为队首指针确定导致的,就是被删除的元素空间无法被重复利用。可以让队首和队尾的指针循环起来就可以,就是将元素存储在循环向量中。“
一端只能进入,另一端只能出,应该是指只能从一端添加新元素,另一端删除元素