摘要: 1.本质:malloc是一个函数,new是关键字 2.初始化:malloc需要手动初始化,new会自动初始化 3.大小:malloc用sizeof初始化,new会根据数据类型自动计算 4.返回值:malloc返回的指针需要进行判空处理,而new则抛出异常退出 5.malloc需要进行类型强转 阅读全文
posted @ 2026-03-22 20:33 汉堡堡 阅读(3) 评论(0) 推荐(0)
摘要: 1.本质不同: 指针:存地址的变量,可以被赋值,本身不管理内存 数组:数组名是地址常量,不能被赋值,是一段连续的内存空间 2.大小不同: 指针:32位系统下是4字节,64位系统下是8字节 数组:sizeof(arr)可以求总大小,是在编译期直接根据数组类型算出的总字节数,不是运行时计算 3.函数传参 阅读全文
posted @ 2026-03-22 19:18 汉堡堡 阅读(1) 评论(0) 推荐(0)
摘要: 数组名本质是指向数组首元素指针常量 下标i的本质就是指针偏移量 第一个元素的偏移量是0,所以数组下标从0开始 阅读全文
posted @ 2026-03-22 19:08 汉堡堡 阅读(5) 评论(0) 推荐(0)
摘要: 1.free的不是动态申请的 2.重复释放 3.free的时候指针没有指向动态内存的开头 阅读全文
posted @ 2026-03-22 19:05 汉堡堡 阅读(2) 评论(0) 推荐(0)
摘要: 1.预处理阶段 2.编译阶段 3.汇编阶段 4.链接阶段 5.加载与运行 阅读全文
posted @ 2026-03-22 19:04 汉堡堡 阅读(1) 评论(0) 推荐(0)
摘要: void Show_InOder_BST(BSTNode* root) { assert(root != NULL); std::stack<BSTNode*> st; st.push(root); bool tag=true; while (!st.empty()) { while (tag && 阅读全文
posted @ 2025-12-15 20:01 汉堡堡 阅读(3) 评论(0) 推荐(0)
摘要: 5.找单链表倒数第k个结点 Node* Get_Kth_Node(Node* plist, int k) { Node* p = plist; Node* q = plist; for (int i = 0; i < k; i++) q = q->next; while (q != NULL) { 阅读全文
posted @ 2025-11-16 20:45 汉堡堡 阅读(11) 评论(0) 推荐(0)
摘要: 4.判断是否回文 std::stack<Node*> st; int len = GetLength(plist); Node* p = plist->next; for (int i = 0; i < len / 2; i++) { st.push(p); p = p->next; } if (l 阅读全文
posted @ 2025-11-16 20:43 汉堡堡 阅读(7) 评论(0) 推荐(0)
摘要: 3.任意删除一个结点(要求时间复杂读为o(1)),给的这个节点的地址不能是尾结点(这个结点是无法找到上家的) //0.做判断:p不能是尾结点 if (p->next == NULL) return false; //1.申请一个指针q,用来指向p的下一个节点 Node* q = p->next; / 阅读全文
posted @ 2025-11-16 20:42 汉堡堡 阅读(11) 评论(0) 推荐(0)
摘要: 2.判断两个单链表是否存在交点,如果存在交点,则找到相交的一点。 (1)只需判断是否相交 用两个分别跑到单链表的未结点处,然后判断是否是同一个尾结点即可 (2)指出具体的相交的结点是什么 先统计两个单链表长度,然后让指针p指向较长的单链表,让指针q指向较短的单链表 让p指针提前出发,向后走差值步 此 阅读全文
posted @ 2025-11-16 20:41 汉堡堡 阅读(19) 评论(0) 推荐(0)