- 博客(22)
- 收藏
- 关注
原创 约瑟夫环链表,数组实现
链表实现:#include <stdio.h>#include <stdlib.h>struct node { int data; struct node *next;};int main(void){ int n, m; int i; int answer[100]; int count = 0; struct node *head, *tail, *p, *q; head = (struct
2021-10-07 16:11:53
123
原创 c++异常处理 栈解旋 栈展开
栈解旋:当发生异常时,从进入try块后,到异常被抛掷前,这期间在栈上的构造的所有对象都会被自动析构。析构的顺序与构造的顺序相反,这一过程被称为栈的解旋(unwinding) (注意栈解旋发生的时间段~)Q:简述一下“栈展开”的过程?A:栈展开的就是指匹配catch子句的过程。具体匹配过程如下:1)当程序抛出一个异常或者在try块中检测到异常时就会停止执行当前的调用链,开始寻找与异常匹配的catch子句。2)当在try块中出现一个throw语句或者在try块中调用了可能出现异常的函数时,首
2021-09-23 20:28:55
282
原创 用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 如果你在你的表达式中用到UL(表示无符号长整型)...
2021-09-19 21:20:20
1861
原创 两段代码共存于一个文件,编译时有选择地编译其中的一部分,如何实现
在源码中使用条件编译语句,然后在程序文件中定义宏的形式来选择需要的编译代码在源码中使用条件编译语句,然后在编译命令的命令中加入宏定义命令来实现选择编译。1)第一种方法//根据代码所需设置宏定义IS_DAI是0或1#if IS_DAI代码A;#else代码B;#end2)第二种方法ifdef aaa//如果aaa被定义则执行#else#endif3)第三种方法#ifndef aaa//如果aaa没被定义则执行#else#endif//作用:确保代码只被执行一次.
2021-09-19 21:02:30
800
原创 将两个降序链表合并为一个新的 降序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
输入例子1:{6,3,2},{11,5,1}输出例子1:{11,6,5,3,2,1}输入例子2:{1},{}输出例子2:{1}输入例子3:{0},{0}输出例子3:{0,0}说明:本题目包含复杂数据结构ListNodeclass Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * *
2021-09-19 11:22:08
1248
1
原创 用循环和递归分别实现斐波那契数列
话不多说,上代码#include<iostream>using namespace std;int Fib1(int n) //递归{ int result; if (1 == n || 2 == n) { return 1; } result = Fib1(n-1) + Fib1(n-2); return result;}//由代码可以看出递归的办法非常简短,//直接将斐波那契数列的递推公式带入即可实现,但与此同时这个办法也有一个缺点,//那就是效率低下
2021-09-08 18:04:13
344
原创 [编程题]字符串筛选
链接:https://www.nowcoder.com/questionTerminal/511e2634cddc4195890916654286d28e来源:牛客网[编程题]字符串筛选热度指数:966 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M 算法知识视频讲解 给定一个长度为nnn字符串, 需要去除所有之前曾经出现过的字符,只保留第一次出现的字符示例1输入"aab"输出"ab"说明删除了第二个a示例.
2021-09-06 08:50:05
292
原创 为何64位下一个指针大小为8个字节?
通俗理解指针对于C/C++/OC等语言中,经常会在代码中看到指针这个玩意,并且对于多数小伙伴们来说,可能指针这个东西也是属于学习一门语言时的一个难点和痛点,也有可能好多小伙伴都工作好些年了,对于指针的理解仍然是处于一种云里雾里的状态,可能原因就在于网上很多文章以及很多书上对于指针的描述都是过于书面化。今天我在这里就先好好的讲述一下指针的通俗理解。说到指针,首先我们得开始从变量说起(或者常量,以下均用变量进行说明),如果你实现下面代码:int a = 10; 最终转成汇编的底层内存布局就是,在某一块
2021-09-05 08:40:32
3027
原创 [编程题]括号字符串的有效性
链接:https://www.nowcoder.com/questionTerminal/769abd985f3849d0b9415b082f94c192来源:牛客网给定一个字符串str,判断是不是整体有效的括号字符串(整体有效:即存在一种括号匹配方案,使每个括号字符均能找到对应的反向括号,且字符串中不包含非括号字符)。输入描述:输入包含一行,代表str(1≤lengthstr≤105)( 1 \leq length_{str} \leq 10^5)(1≤lengthstr≤105.
2021-09-05 08:39:03
180
原创 反转单链表
描述输入一个链表,反转链表后,输出新链表的表头。示例1输入:{1,2,3}返回值:{3,2,1}class Solution {public: ListNode* ReverseList(ListNode* pHead) { ListNode *pre = nullptr;//pre指针指向已经反转好的链表的最后一个节点,最开始没有反转,所以指向nullptr ListNode *cur = pHead;//cur指针指向待反转链
2021-09-01 20:07:19
65
原创 用两个栈实现队列
描述用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。示例:输入:["PSH1","PSH2","POP","POP"]返回:1,2解析:"PSH1":代表将1插入队列尾部"PSH2":代表将2插入队列尾部"POP“:代表删除一个元素,先进先出=>返回1"POP“:代表删除一个元素,先进先出=>返回2class Solu.
2021-09-01 20:02:30
64
原创 用两个栈实现队列
描述用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。示例:输入:["PSH1","PSH2","POP","POP"]返回:1,2解析:"PSH1":代表将1插入队列尾部"PSH2":代表将2插入队列尾部"POP“:代表删除一个元素,先进先出=>返回1"POP“:代表删除一个元素,先进先出=>返回2class Sol
2021-09-01 08:39:52
74
原创 用宏定义得到一个数的高位和低位字节
#define WORD_LOW(a) (( a & 255))#define WORD_HIGH(a) (a>>8)//一个字由两个字节组成,因此WORD_LOW取参数xxx的低8位,WORD_HIGH取参数的高8位#include<iostream>using namespace std;int main(){ int a = 62597; //1111 0100 1000 0101 cout << WORD_HIGH(a)<&.
2021-08-27 09:40:47
915
原创 const的使用
#include<stdio.h>int main(){ const int x = 1; //x = 2; 因为x为整型常量,所以不能修饰x的值 int b = 10; int c = 20; const int* a1 = &b; //const修饰的是指针所指向的变量 a1 = &c; //修改指针a1本身,正确 //*a1 = 1; //改变a1指向的内容,不正确 int* const a2 = &b; //const修饰的是.
2021-08-27 09:38:39
60
原创 有符号变量与无符号变量的值的转换
#include <stdio.h> char getChar (int x,int y) { char c; unsigned int a = x; (a+y > 10) ? (c = 1): (c = 2); return c; } int main (void) { char c1 = getChar(7,4); char c2 = getChar(7,-7); .
2021-08-24 15:58:06
290
原创 C补习--------->第六天,二级指针、指针和数组的关系、位置排序
1,二级指针:二维数组?---》数组的数组二级指针?---》指针的指针概念:二级指针存储的是一级指针的地址(定义意味着有空间 有空间就会有地址) 格式: 定义一级指针的格式: 存储类型 数据类型 * 指针变量名; 定义二级指针的格式: 存储类型 数据类型 **指针变量名; 分析: 存储类型:二级指针自身的存储类型 数据类型**:二级指针的数据类...
2021-08-21 16:52:40
84
原创 1,循环2,break,continue 3,数组(一维:整形 & 字符)4,冒泡排序5,字符串处理相关的函数---------------------------------------
数组:整形数组:输入输出均需要通过循环来完成字符数组:本质就是一个字符串:通过整体去操作:gets,puts, scanf,printf字符串处理相关的函数:-----》注意:针对字符串来说strlen: //测有效字节strcpy:strncpy:strcat:strncat:strcmp:strncmp:memset:-------------------------------------------------strlen:头文件: #inclu...
2021-08-21 16:51:39
57
原创 C补习----->第四天,循环、break与continue、数组(一维:整形&字符)、冒泡排序、字符串处理相关的函数
1,循环2,break,continue3,数组(一维:整形 & 字符)4,冒泡排序5,字符串处理相关的函数----------------------------------------------------------------循环:三大循环---》for while do_while当需要重复做某件事情时,需要通过循环来做!(1)for :格式: for(表达式1;表达式2;表达式3) { 循环体//代码的实现过程...
2021-08-21 16:49:53
85
原创 C补习------>第三天,运算符、输入输出函数、控制语句
1,运算符2,输入输出函数3,控制语句-----------------------------------------------------------------------------1,运算符:包括:算术运算符,逻辑运算符,关系运算符,sizeof运算符,三目运算符,逗号运算符,位运算符,赋值运算符(1)算术运算符:+ - * / % ++ --%:运算对象必须为整形++:规则:++在前,先自加(给旧值自加),再赋值(将自加之后的新值赋值给表达式) ...
2021-08-21 16:47:35
51
原创 C补习------>第二天,计算机的基本结构、程序的了解、C库、数据表示、数据类型、常变量、数据类型的转换
1,计算机的基本结构2,什么是程序3,程序的设计步骤4,C库5,计算机的数据表示6,数据类型7,常量8,变量9,数据类型的转换-----------------------------------------------------------1,计算机的基本结构(1)输入输出设备:键盘,鼠标,显示屏,扫描仪。。。。(2)CPU处理器:包含:算术逻辑运算器和控制器 CPU处理器称为计算机的大脑,控制的是计算机的执行 ...
2021-08-21 16:46:32
90
原创 C补习---->第一天,编程环境的介绍、shell命令、vim编辑器、gcc编辑器
第一天:(1)编程环境的介绍(2)基于Linux的shell命令(3)vim编辑器的使用(4)gcc编译器-----------------------------------------------------------------------------------(1)编程环境的介绍虚拟机: 虚拟出来的一台电脑。 通过软件模拟出来的一台电脑(硬件环境),里面支持操作系统,硬盘以及内存,是一个可以运行的操作系统 共享了真机的一部分硬盘和内...
2021-08-21 16:42:51
85
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人