- 博客(36)
- 收藏
- 关注
原创 数据结构学习:线性表的顺序表示和实现1
这是什么意思呢,意思就是你要存什么类型的变量,是 int,char,double等一般类型变量,还是你自己定义的结构体类型变量,是什么类型,就把那个ElemType那个地方替换成那个,注意要加括号的,强制类型转换都是要加的。线性表的顺序存储表示和链表表示不一样,顺序存储表示一般不需要什么地址,只需要知道基地址那么后面的也就知道了,所以顺序存储线性表的组成就是由存储元素的数组和记录线性表实际长度的变量组成,2、c++中的动态存储分配(就是上面说的那个为线性表开辟空间的那个,只不过是c++里面的形式)
2024-01-20 17:24:42 952
原创 结构体的一些补充知识
指向首地址,就是想利用顺序表来存储信息,因为知道了基地址,那么后面的所有地址也就都知道了,这是利用顺序表的特性来写的代码,以此来存储信息。如果我们不对指针进行初始化,它的值就是未定义的,可能是随机的,这会导致程序出现不可预知的错误。上面就是我所想表现的结构体与指针的混合使用,当然也有函数的,这就是数据结构里面的内容,具体的部分等我学到后面再继续补充和总结。就是结构体的名称,而这个名称位于结构体定义的末尾,分号之前。结构体的内存布局是按照成员变量的声明顺序进行的,每个成员变量占据一定的内存空间。
2023-12-21 18:16:39 946
原创 c++里面的知识学习:指针与引用
通过定义指针变量并将其初始化为某个地址,然后将该指针变量赋值给普通变量,就可以在普通变量中存储地址。但是需要注意,这种情况下普通变量仍然存储的是指针变量的值(即地址),而不是直接存储地址本身。其中,数据类型表示指针所指向的目标变量的数据类型,* 表示该变量是一个指针变量,指针变量名是程序员自定义的变量名。要注意的是,指针变量需要初始化为有效的内存地址,否则可能导致不可预测的行为。普通变量和指针变量之间的区别在于它们所存储的内容以及对应的操作方式。类型数据的指针变量,它存储的是一个内存地址,可以通过。
2023-12-21 16:02:40 922
原创 c++里面的知识学习:类、结构体
构造函数是一种特殊的成员函数,在创建对象时被调用,用于初始化对象的数据成员。:成员函数是类中定义的普通函数,它们用于操作对象的状态和实现类的功能。:析构函数是另一种特殊的成员函数,在对象销毁时被调用,用于清理对象占用的资源。结构体可以包含多个成员变量,每个成员变量可以是任何合法的C++数据类型,包括基本类型和自定义类型。这只是一个简单的类定义示例,实际上,类可以包含更多的数据成员和成员函数,并且可以有更复杂的功能。:使用类名和括号创建类的对象,并通过构造函数初始化对象的数据成员。接着,我们调用了对象的。
2023-12-19 13:31:44 950
原创 函数难题:排列
给定一个整数 n,将数字 1∼n 排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。共一行,包含一个整数 n。按字典序输出所有排列方案,每个方案占一行。1≤n≤9输出样例: 这代码中蕴藏的知识十分多,让我一一来解释与总结。 一、其中的代码语句的深刻理解。1、st[i] = false; 该语句会将当前选择的元素标记为未使用,从而恢复现场,回溯到之前的状态。这个过程是在dfs函数中进行的,当搜索到一个合法的方案时,dfs函数会向上回溯,并且撤销之前做出的选择,重
2023-12-17 00:15:47 879
原创 函数题:走方格
给定一个 n×m的方格阵,沿着方格的边线走,从左上角 (0,0)开始,每次只能往右或者往下走一个单位距离,问走到右下角 (n,m) 一共有多少种不同的走法。
2023-12-12 14:05:45 402
原创 函数中档题:数组去重
所以不是说有一个for循环就直接把括号括起来,然后直接在里面写,这是一种惯性思维,是需要改进的。接下来我来说说这个布尔变量的好处,首先那个bool is_exist 是用来标记有没有重复的元素的。他放在内层循环的前面,方便下一次的循环操作。如果我们不用这个布尔变量,那么就会出现无法实施那个if语句的情况。那个if语句就会变为。
2023-12-09 11:39:42 328
原创 函数基础题:数组翻转
给定一个长度为 n 的数组 a和一个整数 size,请你编写一个函数,,实现将数组 a中的前 size 个数翻转。输出翻转后的数组 a。
2023-12-02 20:26:29 571
原创 打印字符串
给定一个字符串,请你编写一个函数,,将这个字符串打印出来。注意:对于Python语言,print是内置函数,所以本题中使用这个函数名,来避免跟内置函数产生冲突。
2023-12-01 22:56:50 390
原创 函数基础题:复制数组
给定两个数组 a 和 b 以及一个整数 size,请你编写一个函数,,将 a 数组中的前 size 个数字,复制到 b 数组中。复制完成后,输出 b 数组。
2023-12-01 21:27:40 407
原创 函数基础题:打印数字
输入一个长度为 n 的数组 a和一个整数 size,请你编写一个函数,, 打印数组 a 中的前 size个数。注意:对于Python语言,print是内置函数,所以本题中使用print1D()这个函数名,来避免跟内置函数产生冲突。
2023-11-29 23:55:53 360
原创 c++里面的函数学习 day3
返回void的函数不要求非得有return语句,因为在这类函数的最后一句后面会隐式地执行return。所以一般void类型的函数后面不写return。通常情况下,void函数如果想在它的中间位置提前退出,可以使用return语句。return语句终止当前正在执行的函数并将控制权返回到调用该函数的地方。没有返回值的return语句只能用在返回类型是void的函数中。
2023-11-27 21:21:17 376
原创 c++里面的函数学习 day2
由输出数据可以看出,第一次输出的时候是调用的output函数,这个时候是正常输出,所以输出的是原数组。这里注意,那个函数里面我赋值的二维数组全是1这个元素的那一句语句,是在输出的后面的,是不会影响我前面正常的输出的。/*这是用指针写的样子,和一维数组时很像,但是这里要注意,只要是多维数组传参,要用指针的格式来写,那必须用一个括号将指针符号和数组名字给括起来,形成所谓的。这一句是用来声明一个指向包含10个整数的数组的指针,它的作用是让指针能够指向整个数组,而不仅仅是数组的第一个元素。
2023-11-26 18:08:08 929
原创 c++里面的函数学习 day1
从这里可以发现输入的值3和4,输出的时候变成了10和20,说明输入的值被改变了,随着函数内部值的变化而变化。这种就是传的引用参数,函数内部变,那么原输入也变,这是它的一个特点。这里可以发现,我在函数里面自己初始化了x和y的值,那么在调用这个函数时,不管你外面输入的什么值,最后的结果仍是20,说明改变了函数内部的参数的值后,会影响最终输出的结果。但是输入的值是多少还是多少,不会改变,就像这里输入了3和4,输出后也还是3和4,说明函数内部参数值的变化并不会影响输入值的值,这就是传递非引用参数时的情况。
2023-11-25 19:40:13 314
原创 字符串最大跨距
有三个字符串 S,S1,S2,其中,S 长度不超过 300,S1 和 S2 的长度不超过 10。现在,我们想要检测 S1 和 S2 是否同时在 SS 中出现,且 S1 位于 S2 的左边,并在 S 中互不交叉(即,S1的右边界点在 S2 的左边界点的左侧)。计算满足上述条件的最大跨距(即,最大间隔距离:最右边的 S2 的起始点与最左边的 S1 的终止点之间的字符数目)。如果没有满足条件的 S1,S2 存在,则输出 −1。例如,S=, S1=ab, S2=ef。
2023-11-22 22:24:28 685
原创 字符串乘方
给定两个字符串 a 和 b,我们定义 a×b为他们的连接。例如,如果 a=abc而 b=def, 则 a×b=abcdef。如果我们将连接考虑成乘法,一个非负整数的乘方将用一种通常的方式定义:a0=``(空字符串),=a×。
2023-11-18 23:40:13 56 1
原创 字符串移位包含问题
对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。给定两个字符串 s1 和 s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如CDAA是由AABCD两次移位后产生的新串BCDAA的子串,而ABCD与ACBD则不能通过多次移位来得到其中一个字符串是新串的子串。
2023-11-18 00:43:13 213 1
原创 字符串中最长的连续出现的字符
求一个字符串中最长的连续出现的字符,输出该字符及其出现次数,字符串中无空白字符(空格、回车和 tabtab),如果这样的字符不止一个,则输出第一个。
2023-10-19 23:41:04 252
原创 770.单词替换
输入一个字符串,以回车结束(字符串长度不超过 100100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
2023-10-15 17:54:26 30 1
原创 输出字符串
给定一个字符串 aa,请你按照下面的要求输出字符串 bb。给定字符串 aa 的第一个字符的 ASCII 值加第二个字符的 ASCII 值,得到 bb 的第一个字符;给定字符串 aa 的第二个字符的 ASCII 值加第三个字符的 ASCII 值,得到 bb 的第二个字符;给定字符串 aa 的倒数第二个字符的 ASCII 值加最后一个字符的 ASCII 值,得到 bb 的倒数第二个字符;给定字符串 aa 的最后一个字符的 ASCII 值加第一个字符的 ASCII 值,得到 bb 的最后一个字符。
2023-10-11 22:55:43 27
原创 去掉多余的空格
输入一个字符串,字符串中可能包含多个连续的空格,请将多余的空格去掉,只留下一个空格。共一行,包含一个字符串。输出去掉多余空格后的字符串,占一行。输入字符串的长度不超过 200200。保证输入字符串的开头和结尾没有空格。输出样例: 这个题的思想就是利用双指针来写的,是先读入所有的字符,包括空格,再利用遍历的方法来清掉空格,最后得到结果,而且有两个字符串的表示,一个是刚输入的,还未操作过的,另一个是结果,是已经操作完,得到的正确结果,也用字符串表示,这是我觉得巧妙的地方,也拓宽了我的思路
2023-10-10 23:37:48 128
原创 字符串插入
有两个不包含空白字符的字符串 strstr 和 substrsubstr,strstr 的字符个数不超过 1010,substrsubstr 的字符个数为 33。(字符个数不包括字符串结尾处的\0。将 substrsubstr 插入到 strstr 中 ASCII 码最大的那个字符后面,若有多个最大则只考虑第一个。
2023-10-08 23:45:39 303
原创 用数组来进行遍历
但是需要注意的是,输入的时候不能有空格或者回车,不然是读不了这两者后面的字符串的,但若真像读,那么可以用fgets或者getline来读入,就要比cin麻烦一些。自我感悟:说到遍历,就得先说说数组,当我们输入字符串时,字符串中的每个字符都被存在了一个数组里,例如,我输入"hello",那么在这里,'h'这个字符就存入了a[0]这个数组里面,后面的以此类推,由此可见,数组把这个字符串分成了一块一块的,就像我们吃的巧克力一样,一条一条的,整整齐齐的排列,并排在一起。2023年9月15日。
2023-09-15 23:26:30 105
原创 只出现一次的字符
给你一个只包含小写字母的字符串。请你判断是否存在只在字符串中出现过一次的字符。如果存在,则输出满足条件的字符中位置最靠前的那个。如果没有,输出no。
2023-09-15 22:32:30 247
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人