首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    c语言 | 单链表的实现

    今天分享的是单链表。准确的说,单链表不算是C语言中的内容,而是属于数据结构的内容,因为它没有新的知识点,只是利用了结构体和指针等的知识。...但是它在C语言中应用还是很广泛的,在RTOS中,也是非常多的地方使用到了链表。今天暂时说一下单链表的实现和简单应用,下一节当中再介绍双链表。 首先,要对单链表有个概念。...说明:在本次实验中,使用的是vscode编辑器,编译环境是gcc,不建议使用VC6.0,因为VC6.0使用的c语言标准太老了,很多语法都不支持,并且,VC6.0使用体验极差,没有代码高亮功能等等。...所以,推荐使用vscode编辑器,也可以使用windows自带的编译器,打开cmd终端,使用gcc命令编译.c文件,生成.exe可执行文件后执行即可。...再测试其他的情况,也都没有问题,说明我们的代码实现了预定目标。

    2.6K30

    C语言 文件读写的实现

    关于C语言的文件读写,我将介绍下面这几种方式: 字符的读写:使用 fgetc() 函数 和 fputc() 函数; 字符串的读写:使用 fgets() 函数和 fputs() 函数; 格式化的读写...字符读写: 1. fputc()函数 fputc(c,fp); //用于将一个字符写入文件 其中,fp为文件指针变量;c为要写入的字符,可以是字符常量或字符型变量。...int main() { FILE *fp; //定义文件指针 char ch; //字符指针 fp=fopen("C://Users//Administrator...2. fgetc()函数 c=fgetc(fp); //用来从指定的文本文件中读取一个字符。 其中,fp为文件指针,c为要写入的字符。...该函数的功能是从指定的文件中读取一个字符,并赋值给字符型变量c。 函数返回值:读取成功,返回读取字符;读取错误或遇到结束标志EOF,返回EOF。

    2.5K10

    C语言 文件读写的实现

    关于C语言的文件读写,我将介绍下面这几种方式: 字符的读写:使用 fgetc() 函数 和 fputc() 函数; 字符串的读写:使用 fgets() 函数和 fputs() 函数; 格式化的读写...字符读写: 1. fputc()函数 fputc(c,fp); //用于将一个字符写入文件 1 其中,fp为文件指针变量;c为要写入的字符,可以是字符常量或字符型变量。...int main() { FILE *fp; //定义文件指针 char ch; //字符指针 fp=fopen("C://Users//Administrator...2. fgetc()函数 c=fgetc(fp); //用来从指定的文本文件中读取一个字符。 1 其中,fp为文件指针,c为要写入的字符。...该函数的功能是从指定的文件中读取一个字符,并赋值给字符型变量c。 函数返回值:读取成功,返回读取字符;读取错误或遇到结束标志EOF,返回EOF。

    2.1K10

    【C语言】冒泡排序的实现

    冒泡排序 这次给大家分享一个C语言实现冒泡排序法 冒泡排序其实就是设计一个冒泡排序函数将一个整型数组从小到大排序....例如一个数组arr[10] = {1,5,2,3,6,7,9,8,4,10},要想数组从小到大排序,就要让数组里面每两个相邻的元素比较,所以我们需要写一个循环进行两两比较;而这个过程又需要循环sz -...1次(sz为数组的元素个数),即冒泡的趟数,让这个比较的过程从头开始....下面来看代码分析: void Sort(int arr[],int sz) { //确定冒泡的趟数 int i = 0; for (i = 0; i < sz - 1; i++) {...;每当进入if条件就代表本趟排序的数据不完全有序,所以会将flag = 0;当某一趟数组已经有序,就不会进入if条件,即本趟数组已经有序,跳出循环,在某个程度上也提高了代码的效率.

    75510

    令牌桶的实现_C语言实现栈

    Guava的令牌桶的实现中,包括一条设计哲学,需要大家注意:它允许瞬间的流量波峰超过QPS,但瞬间过后的请求将会等待较长的时间来缓解上次的波峰,以使得平均的QPS等于预定值。...SmoothRateLimiter类实现了算法的核心部分,因次我们暂且只讨论SmoothRateLimiter和其实现类SmoothBursty。...be positive”); synchronized (mutex()) { doSetRate(permitsPerSecond, stopwatch.readMicros()); } } 主要实现在...nextFreeTicketMicros, waitMicros); this.storedPermits -= storedPermitsToSpend; return returnValue; } 这十多行代码是整个算法实现的核心...该类中,guava提供了一个FakeStopwatch的nested class。它能够让时钟按照我们的要求暂停,休眠随意的时长,并记录休眠和请求对应的事件,并已特定的格式输出。

    1.2K60

    c语言qsort函数的模拟实现

    模拟实现qsort函数 关于qsort函数的预备知识 回调函数 函数指针类型解析 qsort函数用法及相关参数 冒泡排序算法 模拟实现方法介绍 源代码 关于qsort函数的预备知识 回调函数 回调函数就是...回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。...; (4) 第三个参数是一个函数指针,指向的compar函数能比较两个元素,这个函数是要我们自己实现的; 我们可以观察到compar函数返回类型是int,参数类型是const void*。...我们可以用两层for循环来实现冒泡排序。切记外层len次,内层len-i次循环。 模拟实现方法介绍 那么既然明白了冒泡排序算法,那如何改进成类似qsort函数呢?...函数中每次交换一个字节,交换width次,便是交换了一个元素,用一个for循环便可实现。

    69110

    【C语言】扫雷游戏的简单实现

    扫雷游戏 扫雷游戏也是我们常见的小游戏,今天我们来简单实现一下这个小游戏(简陋版). 1.菜单 首先我们创建一个菜单,供玩家选择,菜单跟上一期的三子棋的菜单一样,这里就不多说了; void menu(...*****************\n"); printf("*************************************************\n"); } 这里是主函数部分,实现玩家选择哪个菜单的代码...printf("退出游戏\n"); break; default: break; } } while (input); return 0; } 2.game()函数 是实现整个游戏的主体部分...; SetMine()函数是布置雷的函数; FindMine()函数是实现排雷的函数; void game() { //雷的信息存储 //1.布置雷的信息 char mine[ROWS]...i++) { //打印行号 printf("%d ", i); for (j = 1; j <= col; j++) { //打印字符 printf("%c

    56510

    c语言strlen函数的模拟实现

    1.strlen函数介绍 strlen的功能: 函数返回字符串str 的长度( 即空值结束符之前字符数目)。...这里的空值结束符号就是 ‘\0’ 在c语言中,字符串的末尾通常会自动添加 ‘\0’ 作为结束标志 eg: 如果是char str[] = {‘a’,‘b’,‘c’,‘d’,‘e’};则不会添加 ‘...这是因为strlen()函数不统计’\0’ ,而sizeof统计’\0’ (因为统计的是整个数组的大小) 在监视窗口里我们也可以证实‘\0’的存在: 下面是strlen()函数的官方解释: 2....strlen()函数的模拟实现 (1)循环计数法 我们在了解了strlen()函数的功能后,很容易想到利用 指针传递字符串地址,然后判断是否 == ‘\0’的操作来进行计数,代码如下: #define...(3)指针相减法 我们知道了字符串的首地址,那么我们用字符串中‘\0’的位置 - 字符串的首地址是不是就能直接得到字符串的长度呢 #define _CRT_SECURE_NO_WARNINGS #include

    83410

    C语言栈和队列的实现

    栈 栈(Stack)是一种操作受限的线性数据结构,它的核心规则是先进后出(FILO, First In Last Out)最先放入栈的元素,最后才能取出;最后放入的元素,最先能取出 比如:叠盘子:新盘子总是叠在最上面...栈可以用很多种方式实现,我们来用较为简单的方法实现,动态顺序表,也就是动态数组 typedef int STDataType; typedef struct stack { STDataType*...,每一个节点都是固定的大小 功能:基于链表实现队列入队,将元素 x 插入队列尾部(队列遵循 “先进先出”); 核心逻辑: 校验队列指针有效性,避免空指针操作; 申请新链表节点并初始化(存值 x、后继置空...),内存申请失败则报错退出; 空队列:头尾指针均指向新节点;非空队列:尾节点后继指向新节点,尾指针移至新节点; 队列元素个数 size 自增,记录有效元素数; 设计特点:链表实现队列,入队仅操作尾指针,...已经被释放掉了 } ps->size--; } 功能:基于链表实现队列出队,移除队列头部元素(队列遵循 “先进先出”),释放节点内存并更新指针 / 元素个数; 核心逻辑: 校验队列指针有效性,避免空指针操作

    23810

    C语言实现阶乘

    在本篇博客中,我们将讨论如何使用C语言来实现阶乘的计算。 解题思路: 阶乘的计算可以通过循环或递归来实现。在这里,我们将介绍两种常见的方法。...方法一:使用循环实现阶乘 循环是一种重复执行特定代码块的结构。我们可以使用循环来计算阶乘。具体步骤如下: 定义一个变量result,并将其初始化为1,用于保存阶乘的结果。...下面是使用循环实现阶乘的C代码示例: #include unsigned long long factorial(unsigned int n) { unsigned long...下面是使用递归实现阶乘的C代码示例: #include unsigned long long factorial(unsigned int n) { if (n == 0...希望这篇博客对你理解如何使用C语言实现阶乘有所帮助。如果你有任何问题或需要进一步的解释,请随时向我提问。

    1.6K10

    栈(c语言实现)

    一,栈的概念及结构 1,栈:一种特殊的线性表,其只允许在一端进行数据的插入和删除,这一端称为栈顶,还有一端就称为栈底。栈中的数据元素遵循后进先出LIFO(Last In First Out)的原则。...压栈:栈的插入操作,也叫做进栈,入栈,所插入的数据在栈顶。 出栈:栈的删除操作,所删除的数据在栈顶。 2,栈的结构 二,栈的实现  这里通过数组的方式实现。...}SL; 接下来要实现一些栈的功能 ,有栈的初始化,栈的销毁,入栈,出栈,取栈顶数据,获取栈的元素个数,判断栈是否为空。...2,下面是这些函数的声明:这里都用到一级指针来接收栈的地址。...//取栈顶数据 SLDataType stackop(SL* s); //判空 bool SLEmpty(SL* s); //获取数据个数 int size(SL* s);  3,接下来是函数的实现

    34310
    领券