- 博客(23)
- 收藏
- 关注
原创 栈数据结构:定义,基本操作与应用
栈(Stack)是一种特殊的线性数据结构,其插入和删除操作都只允许在表的一端进行。这一端被称为栈顶(top),另一端则被称为栈底(bottom)。栈遵循后进先出(Last In First Out,LIFO)的规则,即最后存入的元素将被最先取出。顺序栈采用一个数组存放栈中的元素。如果需要用到两个类型相同的栈,这时若为它们各自开辟一个数组空间,极有可能出现这样的情况:第一个栈已满,再进栈就溢出了,而另一个栈还有很多空闲的存储空间。解决这个问题的方法是。
2024-10-03 14:48:14 969
原创 数据结构————双链表
双链表,顾名思义,是一种链式存储结构,其中每个节点不仅包含数据元素,还包含两个指针,分别指向其前驱和后继节点。为什么引入双链表?单链表的结点中只有一个指向其后继的指针,使得单链表要访问某个结点的前驱结点时,只能从头开始遍历,访问后驱结点的复杂度为O(1),访问前驱结点的复杂度为O(n)。为了克服上述缺点,引入了双链表。头插法指的是在双链表的头部插入节点,特点但链表元素的顺序与插入顺序相反,如果需要保持原有顺序,需要在插入后进行反转//头插法建立双链表//待插入结点//(1)创建头结点。
2024-09-10 23:37:31 792
原创 数据结构————单链表
单链表(Singly Linked List)是一种基本的数据结构,它由一系列节点组成,每个节点包含两部分:数据域和指针域。数据域用于存储实际的数据,而指针域则存储指向链表中下一个节点的地址。在单链表中,除了最后一个节点外,每个节点的指针域都指向下一个节点,最后一个节点的指针域通常设置为NULL,以标识链表的结束。单链表的特点是其存储不需要连续的内存空间,节点可以分散在内存中的任意位置,通过指针连接形成线性结构。头插法指的是在单链表的头部插入节点。新节点的指针将指向当前的头节点,然后更新头指针以指向新节点。
2024-09-09 23:42:18 3891
原创 数据结构——顺序表
顺序表是一种基本的数据结构,它通过连续的内存空间来存储数据元素,每个元素占据相同的存储空间,且在逻辑上相邻的元素在物理位置上同样相邻(存储结构)。
2024-09-08 22:01:54 856
原创 Qt中的QGraphicsView、QGraphicsScene与QGraphicsItem:图形视图框架介绍
Qt中的QGraphicsView、QGraphicsScene与QGraphicsItem:图形视图框架介绍
2024-08-20 00:02:02 1498
原创 Qt压缩和解压文件的使用及案例QuaZip,100%能运行
提供第三方库quzip,JlCompress,Zlib 的下载方法,介绍如何去编译链接这些库,和使用
2024-08-11 11:48:02 1299
原创 通过在QApplication对象上调用setStyleSheet方法,可以为整个应用程序设置全局样式
通过在QApplication对象上调用setStyleSheet方法,可以为整个应用程序设置全局样式。这是统一应用程序界面风格的有效方式。
2024-08-10 17:56:03 351
原创 C++的一些基本知识:运算符重载为友元函数
一般情况下,将运算符重载为类的成员函数,是较好的选择。根据使用需求,所以我们应该把运算符号重载为普通函数好些。如重载为成员函数时,他不能处理5+c的情况。创建 复数对象a,对a进行运算。如下,定义一个复数类。
2024-05-18 15:34:09 273
原创 C++的一些基本知识:赋值运算符的重载
比如,把一个int类型变量赋值给一个Complex对象或把一个 char *类型的字符串赋值给一个字符串对象,此时就需要重载赋值运算符“=”因为这个等号不是赋值语句,而是初始化语句,初始化语句需要相应的构造函数,而且后面需要跟char * 的类型。(2)如果S1对象消亡,析构函数将释放S1.str指向的空间,则S2消亡时还要释放一次,不妥。为 String类编写复制构造函数的时候,会面临和=同样的问题,用同样的方法处理。防止一个对象赋值给另外一个对象,而这个对象恰好又和这个赋值的对象是引用关系;
2024-05-18 15:04:09 298
原创 解决VS2022中的 “ 无法启动程序,系统找不到指定文件 “ 问题
【代码】决VS2022中的 “ 无法启动程序,系统找不到指定文件 “ 问题。
2024-05-18 13:53:02 853 3
原创 C++的一些基本知识:类型转换构造函数和析构函数
(1)定义转换构造函数的目的是实现类型的自动转换。(2)只有一个参数,而且不是复制构造函数的构造函数,一般就可以看作是转换构造函数。(3)当需要的时候,编译系统会自动调用转换构造函数,建立一个无名的临时对象(或临时变量)public :Complex(int i) {//类型转换构造函数real = i;imag = 0;imag = i;c1 = 9;//9被自动转换成一临时Complex对象return 0;
2024-05-18 00:10:42 180
原创 C++的一些基本知识:运算符重载的基本概念
1)C++预定义的运算符,只能用于基本数据类型的运算:整型、实型、字符型、逻辑型。//等价于 c=operator+(a,b);4)有时会希望,让对象也能通过运算符进行运算。原因: (2) a-b //等价于a.operator-(b)扩展C++中提供的运算符的适用范围,使之能作用于对象。2)在数学上,两个复数可以直接进行+、-等运算。重载为成员函数时,参数个数为运算符目数减一。重载为普通函数时,参数个数为运算符目数。3)但在C++中,直接将+或-用于。
2024-05-17 23:11:23 214
原创 c++的一些基本知识:友元
(4)可以将一个类的成员函数(包括构造、析构函数)说明为另一个类的友元。(3)友元函数有俩种 一种是另外一个类的成员函数,一种普通的全局函数。1)MostExpensiveCar 是 普通的全局函数。如果A是B的友元类,那么A可以访问B的所有私有成员。(1)一个类的友元函数可以访问该类的私有成员。2)ModifyCar是CDriver的成员函数。(2)声明在该类的友元函数不是该类的成员函数。我们声明俩个类,驾驶员类和汽车类。汽车类中声明了俩个友元函数。友元分为友元函数和友元类。
2024-05-17 22:20:23 152
原创 c++的一些基本知识:常量对象、常量成员函数、常引用
(2)常量成员函数执行期间不应修改其所作用的对象因此,在常量成员函数中不能修改成员变量的值(静态成员变量除外)如果我们不希望某个对象的值被改变,则定义该对象的时候可以在前面加上 const 关键字。引用前面加const 关键字,就是常引用,他的作用是不能通过常引用,去修改他引用的变量。(1)在类的成员函数说明后面可以加const关键字,则该成员函数成为常量成员函数。(3)也不能调用同类的非常量成员函数(静态成员函数除外)原因:其它类的成员函数有可能会修改他所作用的对象。如下:注意加const 的位置。
2024-05-17 21:22:34 272
原创 c++的一些基本知识:成员对象、封闭类、封闭类的复制构造函数
CCcar car;//错误,没有对封闭类进行初始化,因为任何生成封闭类对象的语句,都要让编译器明白,对象中的成员对象,是如何初始化的。3.当封闭类的对象消亡时,先执行封闭类的析构函数,然后再执行成员对象的析构函数。//通过封闭类的构造函数的初始化列表。// 说明b2.a是用类A的复制构造函数初始化的而且调用复制构造函数时的实参就是b1.a。copy是b2初始化的时候,初始化b2.a时,调用类A的复制构造函数初始化产生的;1.封闭类对象生成时,先执行所有对象成员的构造函数,然后才执行封闭类的构造函数。
2024-05-17 19:57:35 1210
原创 c++的一些基本知识:构造函数,复制构造函数,常量引用参数的使用
/ 三个元素分别用(2),(2),(1)初始化。void fun(CMyclass obj) // 函数的参数是类CMyclass 的对象,会调用复制构造函数。// 三个元素分别用(1),(2),(3)初始化。(2)形如 X::X(X&)或X::X(const X &),二者选一后者能以常量对象作为参数。(2)如果某函数有一个参数是类A的对象那么该函数被调用时,类A的复制构造函数将被调用。// error,缺少构造函数的参数。
2024-05-17 18:26:00 566
原创 c++的一些基本知识:内联函数、函数重载、函数的缺省参数
如果函数本身只有几条语句,执行非常快,而且函数被反复执行很多次,相比之下调用函数所产生的这个开销就会显得比较大。C++中,定义函数的时候可以让最右边的连续若干个参数有缺省值,那么调用函数的时候,若相应位置不写参数,参数就是缺省值。编译器处理对内联函数的调用语句时,是将整个函数的代码插入到调用语句处,而不会产生调用函数的语句。一个或多个函数,名字相同,然而参数个数或参数类型不相同,这叫做函数的重载。//等效于 func(10,8,3)//等效于 func(10,2,3)
2024-05-17 17:06:52 194
原创 c++的一些基本知识:new 运算符号
/T :任意类型名 P :类型为T*的指针 N:要分配的数组元素的个数。//这两个表达式返回值的类型都是T*//导致异常,一片空间不能被delete多次。用“new”动态分配的内存空间,一定要用“delete”运算符进行释放。字节的内存空间,并且将该内存空间的起始地址赋值给P。//该指针必须指向new出来的数组。//该指针必须指向new出来的空间。P = new T;字节的内存空间,并且将该内存空间的起始地址赋值给P。用“delete”释放动态分配的数组,要加 []
2024-05-16 23:27:13 267
原创 C++:const 关键字的用法
(3)函数参数为常量指针时,可避免函数内部不小心改变参数指针所指地方的内容。(2)不能把常量指针赋值给非常量指针,反过来可以。//ok,强制类型转换。注意(1):不可以通过常量指针修改其指向的内容。//ok,常量指针的指向可以发生变化。
2024-05-16 23:04:21 198
原创 C++的一些基本知识:引用
const T类型的常变量和 constT&类型的引用则不能用来初始化T&类型的引用,除非进行强制类型转换。//r 引用了n ,r的类型是int & , r是n的别名。//r的类型是 const int &cout
2024-05-16 22:48:20 158
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人