![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言细节问题
文章平均质量分 65
i_Crave
我还年轻,吃苦趁现在!
欲戴王冠,必承其重
展开
-
简述树的特立——二叉树
概念二叉树(binary tree)是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树特殊二叉树1.满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。. 也就是说,如果一个二叉树的层数为K,且结点总数是 (2^k) -1 ,则它就是满二叉树。如下图:2.完全二叉树:满足以下要求:. 所有叶子..原创 2021-11-17 11:46:53 · 1406 阅读 · 3 评论 -
用C语言数组设计循环队列
解释:设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。来源:力扣(LeetCode)链接:622. 设计循环队列 - 力扣(LeetCode) (leetcode-cn.com)著作权归领扣网络原创 2021-11-11 18:48:19 · 1728 阅读 · 5 评论 -
两个队列实现栈
队列的实现:(95条消息) C语言实现队列_i_Crave的博客-CSDN博客栈的实现:(94条消息) C语言实现栈_i_Crave的博客-CSDN博客队列的性质是先进先出;栈的性质是后进先出;如何用两个队列实现栈的性质呢?栈必须是输出最先输入的数据,然而队列只能从最早输入的数据开始输出;所以要想以栈的方式从队列输出只能先把队列中除了队尾的数据全部输出到另一个队列中,再把剩余的那个数据输出,当想输入时往有数据的一个队列从队尾输入数据,这就是实现栈的过程;图解:在...原创 2021-11-04 21:43:33 · 537 阅读 · 9 评论 -
C语言实现队列
队列概念:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头队列的实现队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数 组头上出数据,效率会比较低。下面用链式结构实现队列:// 链式结构:表示队列typedef int QDataType;typedef str...原创 2021-11-04 16:36:38 · 964 阅读 · 2 评论 -
C语言实现栈
栈一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。出数据也在栈顶。栈的实现栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的 代价比较小。如下图:下面用顺序表(数组)来实现栈;建立一个顺...原创 2021-11-02 01:01:20 · 504 阅读 · 6 评论 -
程序是如何执行的
大体上分为三步:编译——>链接——>运行具体如下:预编译: 1.头文件的包含; 2.用空格替换注释; 3.宏定义的替换;(预编译做的都是文本操作)编译:把C语言代码翻译成汇编代码;(中间会有1.语法分析,2.词法分析,3.语义分析,4.符号汇总)汇编:把汇编代码转化成二进制指令(形成符号表,形成.obj文件)链接:1.合并段表 2.符号表的合并和重定向(将目标代码跟函数库相连...原创 2021-09-29 22:19:17 · 288 阅读 · 2 评论 -
C语言文件操作
为什么使用文件使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。什么是文件 ,文件种类磁盘上的文件是文件。 但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境 后缀为.exe)。数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文 件,或者输出内容的文件。文件名一个文件要原创 2021-09-29 16:38:49 · 1698 阅读 · 13 评论 -
动态内存开辟——柔性数组
C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。例如:typedef struct st_type{ int i; int a[0];//柔性数组成员}type_a;有些编译器会报错无法编译可以改成:typedef struct st_type{ int i; int a[];//柔性数组成员}type_a;柔性数组的特点结构中的柔性数组成员前面必须至少一个其他成员。sizeof 返回的这种结构大小不包括柔性数组的内存。原创 2021-09-27 17:08:43 · 229 阅读 · 1 评论 -
C语言——动态内存管理(malloc、calloc、realloc、free)
对于空间的需求,变量,数组都能够解决。但是,有时候我们需要的空间大小在程序运行的时候才能知道, 那数组的编译时开辟空间的方式就不能满足了。这时候就只能试试动态存开辟了。在c语言中给出了3个动态内存开辟的函数:malloc、calloc、realloc;函数详解:malloc声明void *malloc(size_t size)参数size-- 内存块的大小,以字节为单位。返回值该函数返回一个指针 ,指向已分配大小的内存。如果请求...原创 2021-09-24 18:41:20 · 183 阅读 · 0 评论 -
c语言进阶结构体,枚举,联合体
结构体匿名结构体类型:struct{ int a; char b; float c;}x;struct{ int a; char b; float c;}a[20], *p;p=&x;//思考结合上面代码,这种写法合法吗?会警告!编译器会把上面两个声明当成完全不同的两个类型。所以是非法的。结构的自引用注意格式://1.struct Node{ int data; struct Node* next;};//2.t原创 2021-09-22 18:22:16 · 169 阅读 · 0 评论 -
内存操作函数的实现(C语言)
memcpy——内存复制C 库函数void *memcpy(void *str1, const void *str2, size_t n)从存储区str2复制n个字节到存储区str1。C 库函数 – memcpy() | 菜鸟教程 (runoob.com)功能实现:void* my_memcpy(void* dest, const void* src, size_t count){ void* ret = dest; assert(dest && src...原创 2021-09-20 17:03:16 · 141 阅读 · 2 评论 -
自个实现的字符串函数(用C语言)strlen,strcmp,strcpy,strcat,strstr;
一、strlen计算字符串长度函数;C 库函数size_t strlen(const char *str)计算字符串str的长度,直到空结束字符,但不包括空结束字符。C 库函数 – strlen() | 菜鸟教程 (runoob.com)手写:(三种方法)//1.普通计数法int my_strlen(const char * str){ int count = 0; while(*str) { count++; str++; } return count;}...原创 2021-09-16 23:34:46 · 242 阅读 · 4 评论 -
数组与指针题目的细节(一)
题目一:int main(){ int a[4] = { 1, 2, 3, 4 }; int* ptr1 = (int*)(&a + 1); int* ptr2 = (int*)((int)a + 1); printf("%x,%x\n", ptr1[-1], *ptr2); return 0;}解析:&a+1:&a是取出整个数组地址,&a+1是跳过整个数组;(int*)(&a + 1):再强制转化成整形指针,指向数组最后;(原创 2021-09-07 22:09:05 · 133 阅读 · 6 评论 -
qsort函数用法以及如何自己实现
声明下面是 qsort() 函数的声明。void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))参数base-- 指向要排序的数组的第一个元素的指针。 nitems-- 由 base 指向的数组中元素的个数。 size-- 数组中每个元素的大小,以字节为单位。 compar-- 用来比较两个元素的函数。返回值该函数不返回任何值。举例如下:...原创 2021-09-02 00:42:40 · 312 阅读 · 8 评论