常考基础必知必会
A. 排序: 排序有几种,各种排序的比较,哪些排序是稳定的,快排的算法;
  B. 查:哈希查、二叉树查、折半查的对比,哈希映射和哈希表的区别?
  C. 链表和数组的区别,在什么情况下用链表什么情况下用数组?
  D. 栈和队列的区别?
  E. 多态,举例说明;overloadoverride的区别?
  F. 字符串有关的函数,比如让你写一个拷贝字符串的函数啊,或者字符串反转啊什么的。strcpymemcpy?
  G. 继承、多继承?
  H. 面向对象有什么好处?
  I. 说说static的与众不同之处,如果一个变量被声明为static,它会被分配在哪里二叉树中序遍历非递归算法?在什么时候
分配空间等?
  J. 什么是虚函数、纯虚函数、虚的析构函数,用途?
  K. 内存泄漏及解决方法?
  网络部分:
  OSI模型7层结构,TCP/IP模型结构?
  B. TCP/UDP区别?
  C. TCP建立连接的步骤?
  D. 香农定理?
二叉树三种遍历的非递归算法(背诵版)
  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;
typedef struct
{
    stacknode Elem[maxsize];
    int top;
}SqStack;

//后序遍历
void PostOrderUnrec(Bitree t)
{
    SqStack s;
    stacknode x;
    StackInit(s);
    p=t;
 
    do
    {
        while (p!=null)      //遍历左子树
        {
            x.ptr = p;
            x.tag = L;        //标记为左子树
            push(s,x);
            p=p->lchild;
        }
   
        while (!StackEmpty(s) &&s.p].tag==R) 
        {
            x = pop(s);
            p = x.ptr;
            visite(p->data);  //tagR,表示右子树访问完毕,故访问根结点     
        }
       
        if (!StackEmpty(s))
        {
            s.p].tag =R;    //遍历右子树
          p=s.p].ptr->rchild;       
        }   
    }while (!StackEmpty(s));
}//PostOrderUnrec

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。