数学和计算机的结合,研究数据与数据之间关系的一门学科,逻辑性比较强,借助画图理解。
数据的增删改查操作。线性关系,一对一关系,一个前驱一个后继;树关系,一对多,一个前驱多个后继;图关系,多对多,多个前驱多个后继。
算法优劣的衡量:1.时间复杂度(当数据量趋向于无穷时,频度就是时间复杂度。)2.空间复杂度(他是当输入量/数据量趋向于无穷的时,所消耗的空间。)
线性关系的存储:顺序存储(数组)优点是可以随机访问;缺点:删除和插入需要搬运大量数据。链式存储:逻辑上相邻,存储上不相邻,优点:按需分配空间,删除和插入不需要搬运大量数据;缺点:不能随机访问,需要通过前一个节点找到下一个节点,每个节点要存放数据和下一个节点的地址。
栈:先进后出的线性结构,只在同一端插入和删除的线性表,可以实现对数据的逆序。(顺序栈(数组)、链式栈(链表))。
队列:先进先出,又称FIFO,只允许两端操作,一进一出,作用:缓存
队列: queue 又称FIFO,first input first output 只允许在两端进行操作,尾部插入,头部删除的一个线性表, 作用: 缓存, 匹配输入和输出两种不用的速度. struct node head; struct node *phead=&head; struct node *p,*u; p=phead->next; phead->next=NULL; while(p){ u=p->next; //备份链表 p->next=phead->next; //头插法 phead->next=p; p=u; } list_travale();
二叉树的遍历:(遍历只访问一次)
先序遍历:根左右
中序遍历:左根右
后序遍历:左右根
二叉树的应用: 哈夫曼树, 最优二叉树 用途: 压缩
查找和排序:查找(二分法)
排序:选择排序
冒泡排序:
插入排序:
快速排序: