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