
c语言
catdeo
怕什么真理无穷,进一寸有一寸的欢喜
展开
-
【起航】OpenHarmony远征01
项目介绍OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的发展。OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件。OpenHarmony技术架构如下所示:OpenHa原创 2022-04-01 15:07:57 · 5513 阅读 · 0 评论 -
XML文件解析流程
引言expat是使用C语言编写的XML解析器,采用stream的方式解析XML文件,首先需要向解析器注册callback函数,在传入文档进行解析的时候,对于解析器能够识别的部分,就会去调用适当的callback动作进行解析。被解析的xml文件是被分块传入解析器的,这样expat就能够解析较大的xml文件,而不需要将整个xml文件整个加载到内存中去。具体的使用流程创建解析器XML_Parser XML_ParserCreate(const XML_Char* encoding)//创建一个新的原创 2021-04-28 13:51:20 · 977 阅读 · 0 评论 -
浅谈算法的时间复杂度与空间复杂度
1.如何衡量算法的好坏算法效率分为两种:一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。时间复杂度用来衡量算法的运行速度(不以时间作为衡量单位,而是和一条基本语句的执行次数成正比,即算法中基本操作的执行次数,为算法的时间复杂度)空间复杂度用来描述一个算法在运行过程中临时占用存储空间的大小的度量(不是指占用了多少个字节,而是变量的个数,有限个常量的空...原创 2019-04-23 10:45:58 · 629 阅读 · 0 评论 -
C语言实现单链表的增删改查
1.什么是链表,链表的分类链表是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针。常见的链表有以下几种:1.单链表指的是链表中的元素的指向只能指向链表中的下一个元素或者为空,元素之间不能相互指向。也就是一种线性链表。2.双向链表即是这样一个有序的结点序列,每个链表元素既有指向下一个元素的指针,又有指向前一个元素的指针,其中每个结点...原创 2019-04-27 19:26:03 · 1939 阅读 · 0 评论 -
C语言实现一个简单动态顺序表
1. 什么是线性结构? 线性结构中都包含什么内容?线性表是n个具有相同特征的数据元素的有限序列。常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,就是一条连续直线,但在物理结构上不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。2.什么是顺序表?顺序表的分类?顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,通常采用数组存储顺序表通...原创 2019-04-23 17:34:20 · 1210 阅读 · 0 评论 -
快速排序的c语言实现
编程实现qsort#include <stdio.h>#include <stdlib.h>#define SIZE(a) sizeof(a)/sizeof(a[0])//qsort模拟实现void swap(int *x, int *y){ int tmp = 0; tmp = *x; *x = *y; *y = tmp;} void qsort...原创 2019-04-18 22:04:52 · 478 阅读 · 0 评论 -
c语言思维导图
原创 2019-04-24 22:09:11 · 247 阅读 · 1 评论 -
c语言中的动态内存管理
动态内存函数介绍1.mallocmalloc通常用来开辟一段连续内存空间void* malloc (size_t size)(1)如果内存开辟成功,则返回一个指向开辟好空间的指针(2)如果开辟失败,则返回一个NULL指针,因此malloc的返回结果必须判空(3)由于返回值类型为void*,具体使用时根据自身需要强制类型转换(4)如果参数size值为0,则malloc的行为未定义,取...原创 2019-05-06 11:43:47 · 386 阅读 · 0 评论 -
数据结构栈与队列的c语言实现
1.什么是栈,栈有什么特性?栈:一种特殊的线性表,其中只允许在固定的一端进行插入和删除元素操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈顶。栈中的数据元素遵守后进后出的原则(LIFO);压栈:栈的插入操作叫作进栈,压栈,入栈,进入到数据在栈顶出栈:栈的删除操作叫作出栈,出数据也从栈顶2.请用C语言实现一个动态栈#pragma oncetypedef int SDataTy...原创 2019-05-15 10:24:35 · 261 阅读 · 0 评论 -
c语言实现顺序结构的存储二叉树堆
堆是一个完全二叉树,堆分两种,一种为小堆,一种为大堆小堆是指对于这个树的任意任意一个子树来说,子树的根节点都要小于左右孩子节点的值,小堆的根节点是这个树的最小元素,每条路径上的节点都是递增的大堆是指对于这个树的任意任意一个子树来说,子树的根节点都要大于左右孩子节点的值,大堆的根节点是这个树的最大元素,每条路径上的节点都是递减的堆的结构定义如下:其中compare函数用来缺点创建的是大堆还是...原创 2019-05-25 23:59:43 · 462 阅读 · 0 评论 -
c语言中树(二叉树)的相关概念
1. 掌握树的基本概念树是一种非线性的数据结构,他通常是由n个(n>=0)有限结点组成的一个具有层次关系的集合。把他叫作树是因为它看起来像一颗倒挂的树,也就是说它是根朝上,叶朝下的。它具有以下的特点,每个结点有零个或者多个子结点;没有父结点的结点称作根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个自结点又可以2. 掌握树的相关概念结点的度:一个结点含有子树的个数称...原创 2019-05-30 21:31:11 · 3392 阅读 · 0 评论 -
【c语言】两个栈实现一个队列
两个栈实现一个队列核心思想:模拟出队列先进先出的数据结构假设有两个栈input和output,input模拟栈的数据插入,当需要模拟出队列操作时,input栈中的A,B,C,D会按照D,C,B,A的顺序进入栈output。 只要output栈不为空,出队列操作就可以通过output的出栈操作来实现。若output栈为空,则继续从input栈导入数据。若两个栈都为空,即整个队列为空。代码...原创 2019-06-19 09:09:29 · 5946 阅读 · 4 评论 -
【c语言】两个队列实现一个栈
两个队列实现一个栈核心思想:模拟出栈的后进先出操作创建queue1和queue2,入栈时选择一个非空队列执行入队列操作(若两个队列都为空,则随机选择一个队列),出栈时需要先从非空队列queue1把数依次进入空数列queue2,直到queue1中到最后一个数为止,然后将queue1中的数出队列,模拟出栈的后进先出操作。代码模拟Stackby_two_queue.h#pragma once...原创 2019-06-19 09:17:23 · 1694 阅读 · 2 评论 -
c语言实现二叉树的遍历,镜像,拷贝等操作
1.分析顺序存储二叉树的优缺点顺序结构存储就是使用数组来存储,一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费。而现实中使用中只有堆才会使用数组来存储。二叉树顺序存储在物理上是一个数组,在逻辑上是一颗二叉树。普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的...原创 2019-06-03 22:31:07 · 3134 阅读 · 5 评论 -
C语言实现一个简单的通讯录
先写一个简单的静态内存版本下的通讯录具体要求如下通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:添加联系人信息删除指定联系人信息查找指定联系人信息修改指定联系人信息显示所有联系人信息清空所有联系人以名字排序所有联系人保存联系人到文件加载联系人#include <stdio.h>#include <st...原创 2019-04-21 12:17:14 · 703 阅读 · 0 评论 -
c语言中结构体的相关知识点
1.结构体类型创建定义一个结构体struct Stu{ int age; char name[20]; char id[20]; char sex[5];};定义一个匿名结构体,同时将结构体实例化为xstruct{ int a; char b; float c;}x;结构体的成员可以是标量,数组,指针,其他结构体,但是不能是自身,会触发无...原创 2019-04-16 17:05:20 · 845 阅读 · 0 评论 -
C语言远征之基础篇
C语言远征第三天1.将数组A中的内容和数组B中的内容进行交换。(数组一样大) char arr1[] = {"welcome to bit#####"}; char arr2[] = {"you are hardworking"}; char arr3[20]; for (int i = 0; i < strlen(arr1); i++) { arr3[i] = arr1[i...原创 2019-03-20 15:35:58 · 117 阅读 · 0 评论 -
C语言远征基础篇
C语言远征第四天在屏幕上输出以下图案:*************************************************************************************for (int i = 1; i < 14; i += 2) { for (int j = 1; j <= i; j++) { pu...原创 2019-03-24 22:39:16 · 328 阅读 · 1 评论 -
C语言远征之基础篇
c语言远征第五天1.写代码可以在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回-1.(折半查找)#include <stdio.h>#include <stdlib.h>#include <string.h>int Bin_Search(int arr[], int key,int* p){ int left = 0; int ri...原创 2019-03-25 17:04:59 · 127 阅读 · 0 评论 -
C语言远征之基础篇
c语言远征第八天1.递归和非递归分别实现求第n个斐波那契数。//递归实现n个斐波那锲数int Fib(int n){ if (n <= 2) { return 1; } return Fib(n - 1) + Fib(n - 2);}//求第n个菲波那切数列(非递归)int fib(int n){ int result; int pre_result; i...原创 2019-03-31 10:51:32 · 173 阅读 · 0 评论 -
c语言远征之基础篇
c语言远征第六天1.写一个三子棋小游戏#include <stdio.h>#include <stdlib.h>#include <time.h>#define MAX_ROW 3#define MAX_COL 3//写一个三子棋游戏char Cheese_board[MAX_ROW][MAX_COL];int meau(){ print...原创 2019-03-27 15:57:34 · 187 阅读 · 1 评论 -
C语言远征之基础篇
C语言远征第十四天1.一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个数字,编程实现。(总觉得这个题做过)void Find_Single(int arr[], int size){ int count = 0; int left = 0; int right = size - 1; for (left = 0; left <= right; ++le...原创 2019-04-10 16:29:48 · 116 阅读 · 0 评论 -
C语言远征之基础篇
c语言远征第7天学习了函数后,准备将之前的作业都写成函数的形式,再补充一个简单冒泡排序法1.冒泡排序法#include <stdio.h>#include <stdlib.h>void Swap(int *x, int *y){ int tmp = *x; *x = *y; *y = tmp;}void Bubble_Ser(int arr[],in...原创 2019-03-28 11:34:27 · 120 阅读 · 0 评论 -
C语言远征之基础篇
C语言远征第十一天1.编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。如:在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000...原创 2019-04-07 13:41:52 · 123 阅读 · 0 评论 -
C语言远征之基础篇
c语言远征第9天写一个简易版的扫雷游戏#include <stdio.h>#include <stdlib.h>#include <time.h>#define MAX_ROW 9#define MAX_COL 9char showmap[MAX_ROW][MAX_COL] ;char minemap[MAX_ROW][MAX_COL] ;...原创 2019-04-02 13:26:10 · 164 阅读 · 2 评论 -
C语言远征之基础篇
C语言远征第十二天1.调整数组使奇数全部都位于偶数前面。题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。int Judge_odd(int x) //判断奇偶数{ if (x) { if (!(x % 2)) { return 0; } else { return ...原创 2019-04-08 17:48:01 · 128 阅读 · 1 评论 -
c语言远征之基础篇
c语言远征第十三天1.实现一个函数,可以左旋字符串中的k个字符。ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDABvoid Swap(char* x, char* y){ char tmp = 0; tmp = *x; *x = *y; *y = tmp;}void Rotate_string(char str[],int k){ int count = 0...原创 2019-04-09 10:47:48 · 120 阅读 · 0 评论 -
C语言远征之基础篇
C语言远征第九天1. 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。int A, B, C, D, E = 0; for (A = 1; A <= 5; ++A) { for...原创 2019-04-03 16:57:36 · 187 阅读 · 0 评论 -
c语言远征之基础篇
C语言远征第十五天这次将string库函数自己编程实现1.实现strstr//模拟实现strstrconst char * Strstr(const char str1[], const char str2[]){ for (int i = 0; str1[i] != '\0'; ++i) { int j = i; int z = 0; while (str1[j] ==...原创 2019-04-16 16:01:04 · 130 阅读 · 0 评论 -
C语言远征之基础篇
c语言远征第二天1.给定两个整形变量的值,将两个值的内容进行交换。#include <stdio.h>#include <stdlib.h>int main(){ int num1, num2, num3; printf("请输入两个整数:>"); scanf("%d %d\n", &num1, &num2); num3 = num...原创 2019-03-19 16:06:20 · 237 阅读 · 3 评论