C语言数据结构
Stupid_Gao
机械类学生,略懂单片机,C语言,学习C++中
展开
-
(*(void(*)())&shellcode)();
(*(void(*)())&shellcode)();原创 2022-07-18 18:15:59 · 280 阅读 · 0 评论 -
C语言生成JSON格式字符串对接华为物联网云平台
#include <stdio.h>#include <stdlib.h>char t_json[300];int main(){ /* C_JSON生成报文格式; { "services": [{ "service_id": "Device", "properties": {"DeviceID": 10}原创 2022-03-09 14:31:40 · 6182 阅读 · 0 评论 -
链栈基本操作(入栈和出栈)C语言详解
#include <stdio.h>#include <stdlib.h>//链栈基本操作(入栈和出栈)C语言详解//通过采用头插法操作数据的单链表实现了链栈结构,这里给出链栈及基本操作的C语言完整代码://链表中的节点结构typedef struct lineStack{ int data; struct linkStack *next;}lineStack;//stack 为当前的链栈,a表示为入栈元素lineStack *push(lineSta原创 2021-10-11 10:33:47 · 3956 阅读 · 0 评论 -
顺序栈基本操作(入栈和出栈)C语言详解
#include <stdio.h>#include <stdlib.h>/* 顺序栈基本操作(入栈和出栈)C语言详解 栈的具体实现(1)顺序栈(2)链栈 栈的应用(1)回退 (2)框号应用问题 (3)进制转换 顺序栈的基本操作: 顺序表中设定一个实时指向的栈顶元素结构的变量。 设置栈顶为top return top top初始值为-1 入栈top +1 出栈top -1*///元素进栈int push(int原创 2021-10-11 08:52:55 · 6160 阅读 · 0 评论 -
C语言实现循环队列(未写完)
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define BUF_SIZE 8#define true 1#define false 0//具体如何实现,我会在下面通过代码实现//看看这一个结构体占多少个字节:*BUF 4个字节 int指向两个字节typedef struct queue{ int *BUF; int front; int rear}QUEUE原创 2021-10-09 15:36:57 · 75 阅读 · 0 评论 -
链表的基本操作(C语言)详解(摘取自C语言学习网2.5)
链表的基本操作(C语言)详解#include <stdio.h>#include <stdlib.h>typedef struct Link{ int elem; struct Link *next;}link;link *initLink();void display(link *p);//显示链表//链表插入的函数,p是链表,elem是插入的结点的数据域,add是插入的位置link *insertElem(link*p,int elem,int原创 2021-09-03 10:32:46 · 291 阅读 · 0 评论 -
2021-07-15 C语言内核深度解析-双向链表遍历
文章摘自朱有鹏著的代码,理解还不够深刻,用以回忆。内容出自:书籍188页内容-191页#include <stdio.h>#include <stdlib.h>struct node*list_for_each(struct node*pH);//双链表节点struct node{ int data; struct node *pPrev; struct node *pNext;};struct node *create_node(int d原创 2021-07-15 10:06:34 · 216 阅读 · 0 评论 -
STM32通过FATFS给文件名写日期,便于数据记录
很奇怪,用之前的在C语言中跑通,在STM32中容易坏死,出现丢内存的情况,具体问题标记,回头在分析,反正是跑不通。在STM32中debug中发现了死机。这时候看见了一个全新版本,使用mallac,在C语言中跑通了,但是malloc在STM32中不能使用,想一想也是郁闷,例子代码如下:#include <STDIO.H>#include <STRING.H>#include <STDLIB.H>int main(){ char str1[]={"原创 2021-03-22 17:02:39 · 1842 阅读 · 0 评论 -
C语言中字符日期转为字符串再合并
由于在学习FATFS操作体统,需要向SD卡里写文件,需要使用到RTC时钟,实时写文件的功能。需要存入的TXT文件格式为变量格式,如2021-10-10.txt。这里几个知识点。1.日期合并2.字节转为字符串,这里使用sprintf函数3.将字符串合并,这里使用strcat函数。详见代码#include <stdio.h>#include <stdlib.h>//时间结构体typedef struct{ char hour; char min; char se原创 2021-03-20 14:54:10 · 361 阅读 · 0 评论 -
C语言时间提取与转换
#include <stdlib.h>#include <stdio.h>typedef struct{ unsigned char DeviceID[10];//IMEI unsigned char date[10]; unsigned char time[10]; int tempature; int humidity; int voltage; int current; float longitude; float latigu原创 2021-07-30 10:47:22 · 519 阅读 · 0 评论 -
sscanf学习
#include <stdio.h>#include <stdlib.h>typedef struct{ unsigned char DeviceID[10];//IMEI unsigned char date[50]; unsigned char time[50]; int tempature; int humidity; int voltage; int current; float longitude; float latigu原创 2021-07-29 13:41:28 · 85 阅读 · 0 评论 -
七种冒泡法C语言实现未完成
#include <stdio.h>#include <stdlib.h>void bubbleSort_Two(int R[],int length);//1.冒泡排序(Bubble Sort)/*这是一个常用算法总结的程序包括1.冒泡排序(Bubble Sort)2.选择排序(Selection Sort)3.插入排序(Insertion Sort)4.希尔排序(Shell Sort)5.归并排序(Merge Sort)6.堆排序(Heap Sort)7原创 2021-08-20 16:59:35 · 101 阅读 · 0 评论 -
C语言结构体和指针——摘自C语言中文网
指针也可以指向一个结构体,定义的形式一般为:struct 结构体名 *变量名;下面是一个定义结构体指针的实例:struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩} stu1 = { "Tom", 12, 18, '转载 2017-03-19 23:45:19 · 393 阅读 · 0 评论 -
C语言枚举类型(Enum)——摘自C语言中文网
在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等。 以每周七天为例,我们可以使用#define命令来给每天指定一个名字:#include <stdio.h>#define Mon 1#define Tues 2#define Wed 3#define Thur转载 2017-03-23 09:02:46 · 496 阅读 · 0 评论 -
C语言结构体数组
所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。 定义结构体数组和定义结构体变量的方式类似,请看下面的例子:struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小转载 2017-03-19 21:18:15 · 470 阅读 · 0 评论 -
CRC代码算法实现-CRC-16 MODBUS代码实验
#include "stdio.h"unsigned char auchCRCHi[]={0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC原创 2017-12-20 15:49:52 · 1833 阅读 · 0 评论 -
网上数据结构初学笔记(1)
关于数据结构的知识发现基本属于空白,所以决定学习它,决定每天抽出一到两个小时去思考,网上说要多思考,我觉得这个非常正确,多画图,多思考。//定义一个节点的结构typedef struct node{ int member;//节点中的成员 struct node *pNext;//指向下一个节点的指针}NODE,*pNode;//声明变量,声明指针变量大法师打发斯蒂芬首先说一下转载 2017-11-16 11:11:06 · 236 阅读 · 0 评论 -
C语言16位拆成高低八位,和高低八位合成16位数据(1)
#include <stdio.h>#include <stdlib.h>char right,left,temp;//right表示第八位,left表示高八位int size_right,size_left,size_temp;short int number,size_number;short int number_two,number_three;//int 是四个字节 short原创 2017-12-07 17:11:07 · 38248 阅读 · 1 评论 -
STM32F1战舰的II2C-正点原子的个人梳理(2)
代码看不动了,需要自己调试一把,做一个超声波三个定位的算法,晚上试一试,只能说是试一试!!!原创 2017-07-11 17:35:38 · 1677 阅读 · 0 评论 -
C语言结构体(Struct)——摘自C语言学习网
在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的一个例子:struct stu{ char *name; //姓名 int转载 2017-03-19 13:48:11 · 514 阅读 · 1 评论 -
1分钟彻底理解C语言指针的概念
计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样。 例如 int 占用4个字节,char 占用1个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。 下图是 4G 内存中每个字节的编号(以十六进制表示): 我们将内存中字节的编号称为地址(Address)或指针(Pointer)。地址转载 2017-03-19 20:17:26 · 371 阅读 · 0 评论 -
C语言字符串与数字之间的相互转换
在C/C++语言中没有专门的字符串变量,通常用字符数组来存放字符串。字符串是以“\0”作为结束符。转载 2017-10-25 14:30:16 · 3797 阅读 · 0 评论 -
2.3线性表的链式表示和实现(2)-静态链表(1)
静态链表 补充一下之前的理解,感觉怪怪的。 LinkList&La,表示La就是理解为头结点。 补充一下知识点: pa?pa:pb; if(pa) pa->next = pa else pc->next = pb需要重点理解的盖面: 1.备用链表 2.游标//一维数组来描述线性链表://----------线性表的静态单链表存储结构-----#define MAXSIZE 1转载 2017-11-18 13:00:10 · 255 阅读 · 0 评论 -
2.3线性表的链式表示和实现(1)未弄完待更改
Status ListInsert_Sq(SqList &L,int i,ElemType e){ //在顺序线性表L中第i个位置之前插入新的元素e //i的合法值为1<=i<=ListLength_Sq(L)+1 if(i<1||i>L.length)return ERROR;//i 值不合法 if(L.length >= L.listsize) {转载 2017-11-17 17:06:56 · 217 阅读 · 0 评论 -
第二章(2.1线性表的类型定义)
探究++a与a++的区别到底在哪:这里有一个网址写的很不错。 https://jingyan.baidu.com/article/9f63fb919997f3c8400f0efb.html 我在这里给出其结论: (1) 对于b=++a,编译器是将a加1后直接赋值给b (2)对于c=a++,编译器是先将a的值保存在一个临时变量中,本文是eax寄存器,然后将a加1,最后将临时变量的值赋值给c。结转载 2017-11-16 13:55:22 · 276 阅读 · 0 评论 -
2.2线性表的顺序表示和实现(2)待修改
Status ListInsert_Sq(SqList &L,int i,ElemType e){ //在顺序线性表L中第i个位置之前插入新的元素e //i的合法值为1<=i<=ListLength_Sq(L)+1 if(i<1||i>L.length)return ERROR;//i 值不合法 if(L.length >= L.listsize) {转载 2017-11-17 13:26:46 · 224 阅读 · 0 评论 -
3 栈和队列-栈的定义(待更改)
//An是栈顶,A1端是栈底//基本操作InitStack(&S)//操作结果:构造一个空栈S。DestroyStack(&S)//初始条件:栈S已经存在//操作结果:栈S被销毁ClearStack(&S)//初始条件:栈S已经存在//操作结果:栈S清空为出栈StackEmpty(S)//初始条件:栈S已经存在//操作结果:若栈S为空栈,则返回TRUE,否则返回FALSES转载 2017-11-19 11:09:23 · 276 阅读 · 0 评论 -
抽象数据类型线性表的基本操作(个人学习)
InitList(&L)//操作结果:构造一个空的线性列表DestroyList(&L)//初始条件:线性表L已经存在//操作结果:销毁线性表LClearList(&L)//初始条件:线性表L已存在//操作条件:将L重置为空表ListEmpty(L)//初始条件:线性表L已经存在//操作结果:若L为空表,则返回TRUE,否则返回FALSEListLength(L)//初始条件转载 2017-11-16 11:15:33 · 2189 阅读 · 1 评论 -
2.2线性表的顺序表示和实现(1)
线性表的第i个数据元素ai的存储位置为: LOC(ai) = LOC(a1)+(i-1)*l ,其中ai称为基地址 通常用数组来描述数据结构中不同的顺序存储结构 C语言中可用动态分配的一维数组://-----------线性表的动态分配顺序存储结构-------------#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量 #define LISTI转载 2017-11-16 14:33:50 · 288 阅读 · 0 评论 -
斐波那契数列
long long Fibonacci(unsigned int n){ if(n<=0) return 0; if(n==1) return 1; return Fibonacci(n-1)+Fibonacci(n-2);}//面试官期待的算法,时间复杂度降了long long Fibonacci(unsiged n){ i转载 2017-12-01 15:26:13 · 163 阅读 · 0 评论 -
快速排序法
摘自百度百科 快速排序(Quicksort)是对冒泡排序的一种改进。 通过一趟排序将要排序的数据分割成独立的两部分, 其中一部分的所有数据都比另外一部分的所有数据都要小, 然后再按此方法对这两部分数据分别进行快速排序, 整个排序过程可以递归进行,以此达到整个数据变成有序序列。 一趟快速排序的算法是: 1)设置两个变量i、j,排序开始的时候:i=0,j=N-1; 2)以第一个数组元素作转载 2017-12-01 15:00:23 · 181 阅读 · 0 评论 -
字符串转化为整型
#include <stdio.h>#include <stdlib.h>char str1[] = "HelloWorld";// 通过字符数组来定义字符串"HelloWorld",数组中每个存储单元存放一个字符char *str2 = "HelloWorld";// 通过字符指针来定义字符串"HelloWorld",指针str2指向一个存放字符串"HelloWorld"的连续地址单元的原创 2017-12-01 19:12:44 · 2300 阅读 · 1 评论