深度优先搜索类似于树的先序遍历。 其基本思想是: 首先访问起始顶点v,然后由v出发,访问与v 邻接且未被访问的任一顶点w1,再访问与w1 邻接且未被访问的任一顶点W2……重复上述操作。 当不能再继续向下访问时,依次退回到最近被访问的顶点,若它还有邻接顶点未被访问过,则从该点开始继续上述搜索过程,直至图中所有
通过迪杰斯特拉算法计算图G中的最短路径时,需要指定起点s。 此外,需要引进两个集合S和U。 S的作用:记录已求出最短路径的顶点(以及相应的最短路径长度), U的作用:记录还未求出最短路径的顶点(以及该顶点到起点s的距离)。 初始时,S中只有起点s; U中是除s之外的顶点,并且U中顶点的路径是“起
new和delete是用户进行动态内存申请和释放的操作符 operator new 和operator delete是系统提供的全局函数 new在底层调用operator new全局函数来申请空间,delete在底层通过operator delete全局函数来释放空间。 operator new与operat
内置类型: 如果申请的是内置类型的空间,new和malloc,delete和free基本类似,不同的地方是: newdelete申请和释放的是单个元素的空间,new[]和delete[]申请的是连续空间,而且new在申 请空间失败时会抛异常,malloc会返回NULL。 自定义类型: new的原理 调用
mallocfree和newdelete的共同点是:都是从堆上申请空间,并且需要用户手动释放。 不同的地方是: malloc和free是函数,new和delete是操作符 malloc申请的空间不会初始化,new可以初始化 malloc申请空间时,需要手动计算空间大小并传递,new只需在其后跟上空间
new (指针) 类名或者new (指针) type(初始化列表) int main() { Date d1; new(&d1)Date;new (指针)类名 Date* p = new Date[4]{ {2020,11,10},{2023,10,10} }; new(p)Date[4];ne