数据结构复习整理(易混点、易忘点)
来源:互联网 发布:linux查看本地arp缓存 编辑:程序博客网 时间:2024/06/14 05:35
一、时间复杂度计算
二、关于链表
1、头指针与头结点区别:
头指针:头指针是指链表指向第一个结点的指针,若链表有头结点,则是指向头结点的指针。
注:无论链表是否为空,头指针均不为空。头指针是链表的必要元素。
头结点:头结点是为了操作的统一和方便而设立的。放在第一元素的结点之前,其数据域一般无意义(也可存放链表的长度)。
注:有了头结点,对在第一元素结点的插入结点和删除第一结点,其操作与其他结点的操作就统一了。
头结点不一定是链表必须要素。
struct node first;
first.next = &one; //first为头结点
struct node *head = &first; //头指针
2、内存管理 new/delete malloc/free 括号必须配对
区别:①new/delete是C++里才有的,而new/delete与malloc/free一个显著的区别在于,new是建造一个对象,并调用对象的构造函数来初始化对象,其实在所有的new操作过程中,总是分为两步的:一步是申请内存,第二步则是调用构造函数初始化对象。同样,在调用delete的时候,需先调用析构函数,然后再销毁堆内存。
②new/delete通常来说是操作符,可以重载,重载之后就成了函数,而malloc/free是库函数。
③malloc得到的指针是void *型的,必须要强转才能成为需要的类型。
④C++默认的new/delete操作符内部,其实也调用了malloc/free这两个函数。
⑤如果用free释放"new创建的动态对象",那么该对象因无法执行析构函数而可能导致程序出错。
共同:都可以释放NULL指针。
3、关于数据结构中用到的C++中的知识点:
①引用:为目标变量取别名,不另外分配空间;
②输入输出:cin、cout、及头文件;
③命名空间:using namespace std;
4、关于malloc地址不够时,使用realloc重新分配内存(使用malloc和realloc都要 #include <stdlib.h>)
realloc是对malloc申请的内存进行大小的调整。申请的内存同样需要用free()来释放。
void *realloc(void *ptr, unsigned newsize); //给一个已经分配了地址的指针重新分配空间,参数ptr为原有的空间地址,newsize是重新申请的地址长度。
realloc是从堆上分配内存的,当扩大一块内存空间时,realloc()试图直接从堆上现存的数据后面的那些字节中获得附加的字节,如果数据后面的字节不够,问题就出来了,那么就使用堆上第一个有足够大小的空闲块,现存的数据然后就被拷贝到新的位置,而老块则放回到堆上的空闲块中。如果重新分配成功则返回指向被分配内存的void类型指针,否则返回空指针NULL。
在顺序表的插入元素函数中,当存储空间已满,就要增加分配,这时:
newbase = (ElemType *)realloc(L.elem,(L.listsize + LISTINCREMENT) * sizeof(ElemType));
- 数据结构复习整理(易混点、易忘点)
- 一些偏的数据结构整理【整理+复习】
- 面试复习重点 算法 数据结构 【山科大牛陈磊整理】
- 面试复习重点 算法 数据结构 【山科大牛陈磊整理】
- DS(数据结构)复习
- Power Designer复习(整理)
- 复习笔记(待整理)
- Unity复习整理(1)
- Unity复习整理(2)
- Unity复习整理(3)
- 数据结构复习整理——二叉树的基本操作
- 数据结构复习整理——栈的基本操作
- 数据结构复习整理——队列的基本操作
- 数据结构复习 队列(迷宫)
- 数据结构一小时复习(严蔚敏版)
- 数据结构复习(层次遍历)
- 【数据结构复习】(1)绪论
- 数据结构复习笔记(一)
- Eclipse去除js(JavaScript)验证错误
- 【笔试/面试】—— 判断一个链表是否有环
- 在项目什么时候选择使用GCD,什么时候选择NSOperation
- 菜单高亮滚动监听
- python jieba 分词自定义字典
- 数据结构复习整理(易混点、易忘点)
- Spring中Bean的作用域
- 解决方案之——应用的图标总是默认的机器人
- Could not resolve all dependencies for configuration ':XXX:_debugCompile'
- django--模板的继承
- python 迭代器与生成器
- android 防止Button的频繁点击,多次执行点击事件
- android studio 快捷键大全
- DialogFragment宽度设置