算法处理的数据在内存中的格式是什么?
我们希望数据是结构化的,方便读取,因此计算机科学家发明了数据结构
几乎所有的编程语言都自带了许多函数来处理数组,比如数组的排序
是数组的亲戚
i = “love”
虽然长得不像数组,但的确是数组,在计算机幕后的确是这样的
字符放在内存中以/0结尾,不是”字符0“而是”二进制0“,这叫字符“null”,表示字符串结尾。
数组的数组
多个变量打包在一起,在内存中会自动组织到一起的
struct可以构建复杂的数据结构,比如node
1 | struct listnode |
使用node来构建链表
灵活性是通过每个节点指向下一个节点实现的循环链表(circular list)
:尾部的next指向开头非循环链表
:尾部节点指针值是null
链表使用的时候很少看具体地址么,而是经常使用链表的抽象模型
链表的优点
FIFO
队列的链表实现
比方1->2->3->4->5
可以让队列头指向1,队列尾部指向5 (也就是链表的节点连接是反向的)
入队(enqueuing)出队(dequeuing)
LIFO
入栈(push onto the stack)和出栈(pop from the stack)
1 | struct treenode |
最重要的性质:树到根是单向的
每个节点至多两个孩子
顶点多对多
Crash Course Computer Science
Update your browser to view this website correctly. Update my browser now