C
文章平均质量分 78
大桑树保安队
这个作者很懒,什么都没留下…
展开
-
中缀表达式转后缀表达式,以及后缀表达式的计算
目录中缀转后缀表达式逻辑代码演示后缀表达式计算逻辑代码演示先上题目链接牛客:中缀转后缀leetcode:后缀表达式计算中缀转后缀表达式准备三个容器:vector<string> ret 存放最后结果stack<char> symbol 运算符暂时存放map<char,int> P 存放符号优先级逻辑开始遍历中缀字符串:遇到 数字 直接存放入于输出数组 ret遇到操作符symbol栈为空 或者 当前操作符为(,直接入栈栈不为原创 2022-03-26 00:12:03 · 1166 阅读 · 0 评论 -
无符号数的加减运算
无符号数加减原创 2021-12-28 11:36:37 · 10631 阅读 · 2 评论 -
常见八大排序(C语言实现)及动图演示
0.简介排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。原创 2021-11-25 17:40:27 · 1555 阅读 · 4 评论 -
leetcode232 用栈实现队列
原题链接:leetcode232 用栈实现队列用栈实现队列1.基本数据类型2.创建队列3.入队4.出队5.获取队头元素6.判断队列是否为空7.销毁队列8.代码全貌栈——先进后出队列——先进先出本文将利用两个栈实现一个队列的功能。关于队列的基本函数可以参考这篇——栈1.基本数据类型typedef struct { //一个用来push ST s_push; //另一个用来pop ST s_pop;} MyQueue;2.创建队列malloc队列结构体MyQueue,并对两原创 2021-11-04 22:16:37 · 225 阅读 · 0 评论 -
leetcode225 用队列实现栈(C语言)
leetcode225 用队列实现栈栈——先进后出队列——先进先出本文将利用两个队列实现一个栈的功能。关于队列的操作代码可以参考博客原创 2021-11-03 19:04:24 · 587 阅读 · 1 评论 -
C语言数据结构(5)——队列
队列1.队列基本概念2.队列的实现2.1 基本数据类型2.1 初始化队列2.2 检测队列是否为空2.3 队尾处入队2.4 队头处出队2.5 获取队头处元素2.6 获取队尾元素2.7 获取队列中有效元素的个数2.8 销毁队列3.功能展示1.队列基本概念队列和栈一样,是对于数据的存和取有严格要求的线性存储结构。队列与栈的区别在于,队列的两端都是开口,要求数据只能从一段进,从另一端出。队头——出数据的一端队尾——进数据的一端队列中的数据遵循先进先出(FIFO,First In First Out)原创 2021-11-03 17:16:06 · 262 阅读 · 0 评论 -
C语言数据结构(4)——栈
1.栈的基本概念栈是一种线性表,但限定这种线性表只能在一端进行插入和删除操作。栈顶(Top):线性表允许进行插入和删除的一端。栈底(Bottom):该端不允许进行插入和删除。空栈:不含任何元素,top==bottom 。如上图:a0为栈底元素,an为栈顶元素。由于栈只能在栈顶进行插入和删除操作,故进栈次序依次为a1=0,a2,… ,an 而出栈次序为an,…,a2,a1=0。栈的操作特征体现为后进先出(Last In First Out,LIFO),或者先进后出(First In Last Ou原创 2021-10-31 13:48:10 · 313 阅读 · 0 评论 -
C语言数据结构(3)——带哨兵结点的循环双向链表
1.基本数据类型typedef int LTDatatype;typedef struct LTNode{ LTDatatype data; struct LTNode* pre; struct LTNode* next;}LTNode;2.原创 2021-10-30 10:40:07 · 586 阅读 · 4 评论 -
leetcode142 环形链表解析和追及证明
题目链接:leetcode 142 环形链表2看这个问题之前首先了解第141题环形链表:bool hasCycle(struct ListNode *head) { struct ListNode *fast,*slow; slow=head; fast=head; while(fast &&fast->next) { fast=fast->next->next; slow=slow->ne原创 2021-10-25 16:42:05 · 316 阅读 · 0 评论 -
C语言数据结构(2)——单链表
单链表1.单链表基本数据类型2.创建单链表结点3.打印链表4.尾部插入结点5.删除尾部结点6.头部插入结点7.删除头部节点8.寻找结点9.在指定位置之前插入结点10.在指定位置之后插入结点11.删除指定位置的结点12.销毁链表13.实操1.单链表基本数据类型typedef int SLTDataType;//单链表typedef struct SListNode{ SLTDataType data; struct SListNode* next;}SLTNode;2.创建单链表结点原创 2021-10-24 22:29:58 · 2505 阅读 · 0 评论 -
C语言复习(6)——动态内存分配
动态内存分配引言——为什么使用动态内存分配1.malloc和free2.calloc和realloc3.使用动态分配的内存4.常见错误引言——为什么使用动态内存分配在声明数组时,你必须使用一个常量来指定数组的大小,但有时我们往往在程序运行时才知道数组所需的真正大小。例如,一个用于计算学生成绩的程序需要一个数组来存储每个学生的成绩,但是每个班级的学生数量不同。在这种情况下我们就需要声明一个较大的数组,确保能容纳可能出现的最多元素。但是,当程序需要的元素数量超过了声明的长度,显而易见的是声明更大的数组原创 2021-09-24 14:33:49 · 122 阅读 · 0 评论 -
C语言复习(5)——结构体
引言数据常以成组的形式存在,例如一些整型数据聚在一起可以成为数组,再如雇主需要了解每一位雇员的姓名,年龄和工资,但是这些值的类型不同,无法存放在数组中,会了将这些值存储在一起方便访问,在C语言中,我们使用结构体将不同类型的值存储在一起。1.结构体基础知识1.1结构体声明struct tag{ member-list;}variable-list;结构体是一些值的集合,这些值称为成员(member)存放在大括号中,且各个成员可能具有不同的类型。数组元素的长度是固定的因此可以通过下标来访问,原创 2021-09-21 22:52:24 · 193 阅读 · 0 评论 -
C库函数之 strtol函数详解
strtol函数详解函数声明base为0的情况endptr的妙用函数声明long int strtol (const char* str, char** endptr, int base);参数1:str——字符串,函数会从合法的字符开始识别,之前的空格字符会被跳过,合法字符串会被转换为long int, 作为函数的返回值。参数2:endptr——字符指针的地址,如果该参数非NULL,则保存一个指向转换值后面的第一个指针。这个指针方便对字符串剩余的部分进行处理。参数3:base——转换所执行的原创 2021-09-05 12:15:52 · 1298 阅读 · 0 评论 -
三子棋小游戏
做一个三子棋小游戏1.创建工程2. 主函数3.game()函数的设计3.1玩游戏肯定要有一个界面——初始化与打印棋盘3.2玩家与电脑下棋4.代码全貌4.1 game.h4.2 test.c4.3 game.c5.游玩效果1.创建工程game.h——>存放函数声明game.c——>函数定义time .h——>存放主函数2. 主函数创建主函数首先想一下需求:1.如何设计进入界面2.由玩家选择是继续玩还是退出游戏3.具有反复游玩的可能性——循环代码如下:int main.原创 2021-08-29 11:04:24 · 370 阅读 · 1 评论 -
两道题目带你了解sscanf和sprintf
sprintf与sscanf1. sprintf函数声明:说明:一个小例子一道关于sprintf的题2.sscanf函数声明:说明:一个小例子一道关于sscanf的题目总结1. sprintf函数声明:int sprintf ( char * str, const char * format, ... );说明:将格式化的数据写入字符串如果在printf上使用format,将打印相同的文本,但sprintf的内容不会被打印,而是以C字符串的形式存储在str指向的字符数组(缓冲区)中。缓冲区.原创 2021-08-28 20:23:08 · 159 阅读 · 1 评论 -
学完了整型提升?来做做这几道题吧。
1.求输出结果//输出什么?#include <stdio.h>int main(){ char a= -1; signed char b=-1; unsigned char c=-1; printf("a=%d,b=%d,c=%d",a,b,c); return 0;}解答:int main(){ char a = -1; //-1 //10000000 00000000 00000000 00000001——原码 //111原创 2021-08-10 09:24:58 · 60 阅读 · 1 评论 -
函数栈帧的创建与销毁
函数栈帧原创 2021-08-08 23:08:16 · 191 阅读 · 2 评论 -
(C语言)扫雷——防止第一次踩雷+展开
扫雷1.新建源文件2.建立主函数3.game函数设计思路4.函数定义 源码分析4.1 `初始化函数 Init`4.2 `打印函数 Displayboard`4.3 `设置地雷函数 SetMine`4.4 `排查地雷函数FindMine`4.4.1 防止第一步踩雷4.4.2 展开5.函数声明 game.h 源码6.main函数 test.h 源码7 函数定义 game.c 源码8.实际游玩效果1.新建源文件test.c中存放主函数;game.h中存放使用的函数的声明;game.c中存放使用的函数.原创 2021-07-30 16:41:33 · 2300 阅读 · 1 评论 -
C语言复习(4)——数组和指针的那些事儿
数组这里写目录标题数组1.数组名的值为指针常量2.只有在两种场合下,数组名不作指针常量来使用3.下标与间接引用4.注意以下例子也是合法的5.数组与指针6.作为函数参数的数组名7.数组传入函数的声明8.自动计算数组长度9.整型数组的初始化10.自动计算数组长度11.字符数组的初始化12.多维数组13.数组的存储顺序14.数组名15 指向数组的指针1.数组名的值为指针常量也就是数组第一个元素的地址。如果要修改这个指针常量,唯一可行的操作就是把整个数组移动到内存的其他位置。但是,当程序链接后,内存中数组的原创 2021-07-20 19:51:42 · 138 阅读 · 2 评论 -
C语言复习(3)——操作符详解
C语言复习(3)——操作符详解3.1 算数操作符+ - * / %除了%(取余数)操作符,其余操作符的都是既适用于整数类型又适用于浮点类型。当 / 操作符两边都是整数时,他执行整除运算,其他情况下执行浮点数除法。3.2 移位操作符顾名思义,移位操作符就是将一个数的二进制位向左或向右移动。首先看一下原码和补码的转换左移操作符 <<右移操作符 >> a<<i; //左操作数 a 将移动由右操作数 i 指定的位数左右操作数必须为整数。在左移位中,原创 2021-06-22 14:44:06 · 398 阅读 · 0 评论 -
C语言复习(2)——语句
C语言复习(2)——语句2.1 空语句;C中最简单的语句,本身只包含一个分号。空语句不执行任何任务,但仍有作用。适用的场合便是语法要求出现一条完整语句,但并不需要它执行任何任务。2.2 表达式语句C不存在专门的“赋值语句”,赋值就是一种操作,就像加法和减法一样,赋值利用“=”运算符在表达式中进行。在表达式尾部加上分号,就转化为语句,下面的表达式x=y+3;ch=getchar();实际上是表达式语句,而非赋值语句。理解这点非常重要,因为下面的语句也是合法的:y+3;getchar(原创 2021-06-16 22:43:28 · 204 阅读 · 3 评论