logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

二叉树与堆:从非线性结构到 O(N) 建堆

前面几节课的顺序表、链表、栈、队列,都是线性结构:每个元素最多一个前驱、一个后继,数据排成一条线。但现实不总是线性的。文件系统的目录、家谱、编译器的语法树、操作系统的进程树——它们都是一对多的关系,一条链装不下。有 C 语言基础的人会立刻撞上第一个疑问:结构体里放一个指向自己的指针,怎么写?答案是 C 完全支持()。真正难的不是语法,而是两件事:树是第一个必须用递归理解的数据结构。这不是风格问题,

#算法#数据结构
链表面试题两道:环形链表与随机链表的拷贝

链表的增删查改写熟之后,真正拉开差距的是两类题:让遍历永远走不完的环,和一条"还多了一根线"的链表。

#链表#数据结构
栈:一座只从顶端进出的容器

前面实现的顺序表、链表,可以在任意位置插入和删除——很灵活,但调用者必须时刻想清楚"数据放到哪、从哪取"。(后进先出)。撤销上一步、函数调用一层层返回、括号匹配、表达式求值,本质都是"最近的最优先处理"。与其每次手写,不如把它抽象成一个容器。这个容器就是。💡 背景补充:操作系统与编译器也大量使用"栈":函数调用栈记录返回地址,递归靠它回溯。那是系统维护的栈,这一课我们实现的是用户态的栈,同名不同

#数据结构
C++入门基础:从命名空间到nullptr,一文搞懂核心语法

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出一个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以下面的rand不再冲突了。C++中域有函数局部域、全局域、命名空间域、类域;域影响的是编译时语法查找一个变量/函数/类型出处(声明或定义)的逻辑,有了域

#visualstudio#c++
C++ 类与对象(上):从 struct 到 class 的蜕变

public:// 成员函数(Member Function / Method)perror("malloc 申请空间失败");return;_top = 0;// 此处省略扩容逻辑,后面完整版会补上private:// 成员变量(Member Variable / Attribute)// 分号不能省略class后跟类名,花括号内是类体(Class Body),类定义结束后的分号不可省略——这是

#c++#算法#数据结构
C/C++ 内存管理:从 malloc 到 new——掌控每一块内存

对自定义类型,newdelete与mallocfreeclass Apublic:~A()private:int _a;int main()// malloc/free —— 不开辟对象,只开辟内存// 没有输出 A()free(p1);// 没有输出 ~A()// new/delete —— 开辟内存 + 构造对象 + 析构对象// 输出 A():地址delete p2;// 输出 ~A():地

#开发语言#c++
C++ 继承:代码复用的层次之道

public:protected:string _name = "张三";class Student : public Person { // public 继承public:protected:int _stuid;// 学号public:protected:// 职称Student和Teacher不再需要重复定义姓名、地址、电话——继承自Person的部分直接可用。💡 背景补充:C 语言中类

#c++#数据库#开发语言
C++ 类与对象(中):六大默认成员函数

本文深入探讨C++类的默认成员函数机制,重点介绍构造函数、析构函数和拷贝构造函数的作用及实现要点: 构造函数(Constructor) 替代手动Init函数,对象创建时自动调用 规则:无参构造/全缺省构造/默认构造只能存在一个 编译器生成的默认构造对内置类型不初始化,对自定义类型调用其默认构造 析构函数(Destructor) 对象生命周期结束时自动调用,释放对象持有的资源 规则:无返回值无参数不

#c++#开发语言
C++ 类与对象(下):初始化列表、static、友元与编译器优化

无论你是否显式写了初始化列表,构造函数都有初始化列表;无论你是否在列表中显式初始化成员,每个成员都要走初始化列表。你没管的内置类型——编译器爱初始不初始;你没管的自定义类型——编译器调用它的默认构造。

#c++#开发语言
# Linux基础指令(三):权限系统详解

在深入命令之前,先回到原点——什么是权限?权限的本质只有一个:确定什么能做,什么不能做。 它是一张"允许清单",操作系统每收到一个操作请求,就去查这张清单——符合条件就放行,不符合就拒绝。为什么需要权限?两个核心原因:理解权限有一个关键认知:权限的首要限制对象是人(身份),不是文件。 权限始终围绕"谁(角色)能对什么资源做什么操作(属性)"展开。"权限"和"角色"是绑定的——对一个文件做操作之前,

#linux#java#服务器
    共 13 条
  • 1
  • 2
  • 请选择