数据结构知识点总结整理 下载本文

内容发布更新时间 : 2024/9/25 0:42:41星期一 下面是文章的全部内容请认真阅读。

数据结构知识点总结整理 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;