数据结构查找
一,查找表的特性:
1,无序顺序表,查找n,插入1,删除n
2,无序线性表,查找n,插入1,删除1
3,有序顺序表,查找logn,插入n,删除n
4,有序线性链表,查找n,插入1,删除1
5,静态查找数表,logn,nlogn,nlogn
哈希表:不是存储结构
队列:排队先进先出,后进后出
栈:放东西到箱子里
线性表的存储密度大,顺序表方便查找
链表插入删除快
插入排序:
交换排序:原有数组中交换
选择排序:选择关键码最小的
归并排序:挑出两个序列
后序遍历,中-》
后,先-》
四种转化:根节点有右孩子,根节点和右孩子删除,都删除。
森林中有
散列函数:关键字索引
索引是关键字除13的余数
哈希表中地址为1,链地址法解决冲突,查找成功,查找了多少次,就是多少个
线性探测法解决冲突画两个表
按序列,中序遍历是顺序
二叉排序树查找51要查几次
执行函数时局部变量存储一般采用栈结构,与当前代码比较远的不易操作,
设链表不带头结点且操作在表头,嘴不适合的链栈是:
双向循环链表表尾的右指针指向头地址,表头左指针指向尾地址
单向循环链表带头结点,尾指针指向表头
只有表头没有表尾指针的单向循环链表嘴不适合
简答
带头结点和不带头结点的单链表插入,删除区别
带头结点的单链表在第一个数据元素前面加入或者删除第一个结点时头指针的值会
树不允许为空,结点不分左右
二叉树度为2,区分左右子树3个结点的二叉树有5种结构
简述连通图(连通分量)和生成树
任何一对结点之间都存在路径
极大连通子图
生成树:极小连通n-1条边
总结:连通图:在无向图中任意一对顶点都存在路径,则称其为连通图。
连通分量:无向图的极大连通子图,极大连通子图包含所有连通的顶点以及和这些顶点相关联的所有边。
生成树:连通图的极小连通子图,即包含全部顶点,但是只有足以构成树的n-1条边。
图的概念包括:弧的概念,边,无向图,有向图,邻接,度,路径,回路,强连通分量,强连通图,生成树,生成森林
算法
顺序表逆置
void Reverse(struct SqList* L) { int temp = 0; int i =0; for(i=0;i<(L->length)/2;i++){ temp=L->data[i]; L->data[i]=L->data[(L->length)-i-1]; L->data[(L->length)-i-1]=temp; } }
单链表逆置
void reserve(node*head) { node*p; p=head->next; head->next=null; while(p){ q=p; p=p->next; q->next=head->next; head->next=q; } }
二叉树的深度
左右子树比较