数据结构知识点总结整理 0、常考基础必知必会
A. 排序:排序有几种,各种排序的比较,哪些排序是稳定的,快排的算法; B. 查找:哈希查找、二叉树查找、折半查找的对比,哈希映射和哈希表的区别? C. 链表和数组的区别,在什么情况下用链表什么情况下用数组? D. 栈和队列的区别?
E. 多态,举例说明;overload和override的区别?
F. 字符串有关的函数,比如让你写一个拷贝字符串的函数啊,或者字符串反转啊什么的。strcpy和memcpy?
G. 继承、多继承? H. 面向对象有什么好处?
I. 说说static的与众不同之处,如果一个变量被声明为static,它会被分配在哪里?在什么时候分配空间等?
J. 什么是虚函数、纯虚函数、虚的析构函数,用途? K. 内存泄漏及解决方法? 网络部分:
OSI模型7层结构,TCP/IP模型结构? B. TCP/UDP区别? C. TCP建立连接的步骤? D. 香农定理?
1、二叉树三种遍历的非递归算法(背诵版)
本贴给出二叉树先序、中序、后序三种遍历的非递归算法,此三个算法可视为标准算法,直接用于考研答题。
1.先序遍历非递归算法 #define maxsize 100 typedef struct {
Bitree Elem[maxsize]; int top; }SqStack;
void PreOrderUnrec(Bitree t) {
SqStack s; StackInit(s); p=t;
while (p!=null || !StackEmpty(s)) {
while (p!=null) //遍历左子树 {
visite(p->data); push(s,p); p=p->lchild; }//endwhile
if (!StackEmpty(s)) //通过下一次循环中的内嵌while实现右子树遍历 { p=pop(s); p=p->rchild; }//endif }//endwhile }//PreOrderUnrec
2.中序遍历非递归算法 #define maxsize 100 typedef struct {
Bitree Elem[maxsize]; int top; }SqStack;
void InOrderUnrec(Bitree t) {
SqStack s; StackInit(s); p=t;
while (p!=null || !StackEmpty(s)) {
while (p!=null) //遍历左子树 {
push(s,p); p=p->lchild; }//endwhile if (!StackEmpty(s)) { p=pop(s);
visite(p->data); //访问根结点
p=p->rchild; //通过下一次循环实现右子树遍历 }//endif }//endwhile }//InOrderUnrec
3.后序遍历非递归算法 #define maxsize 100 typedef enum{L,R} tagtype; typedef struct {
Bitree ptr; tagtype tag; }stacknode;