这是一个数据结构代码的文件夹,里面包含一些通俗易懂的列表、栈、队列、链表、哈希表、树的描述,以及分类、排序等简单代码
一、列表 顺序存储、列表中存储的是地址,地址的长度都为4 byte.,所以列表中不要求元素类型相同,因为存的地址。长度可以无限扩。
Append:O(1)、insert:O(n)、delete:O(n)。
C的数组怎么存储:a[2]=首地址+4字节*2,查找a[2]的时间复杂度为0(1)。不同之处:
1、一个数组中元素类型一样。
2、数组长度固定。
二、栈Stack
是一个数据集合,只能在一端进行插入或者删除的列表。
后进先出(last-in,first-out,LIFO)。栈底(a[0])、栈顶a[n]。 进栈(压栈)push:li.append、 出栈pop:li.pop、 取栈顶gettop:li[-1]。
三、队列
是一个数据集合,仅允许一端插入,另一端删除。
插入的一端叫队尾rear,进队、入队。 删除的一端叫队头队首front,出队。
先进先出(FIFO)
环形队列、队满((rear+1)%队的长度=fronts牺牲一个空,用来区分队空和队满);队空(rear=fronts)
双向队列:
队列的内置模块:
四、链表
由一系列节点组成的元素集合。每个节点包含两部分:数据域item 和 指向下一个节点的指针next,,通过节点之间的相互连接,最终串联成一个链表。
创建链表:头插法、尾插法
链表的插入:O(1)
链表的删除:
双链表:
双链表的插入:
双链表的删除:
链表对图和树具有启发意义。# learning