环形双链表示意图: Dome: #pragma once #include<stdio.h> #include<stdlib.h> /*节点数据结构*/ typedef struct node { int data;//值 struct node* pPer;//上一节点 struct node* pNext;//下一节点 }NODE,*PNODE;...
堆栈(stack): 后进先出(Last_In First_Out , LIFO)的数据模型。 下面两个都是基于链表实现的栈数据模型 链式正向栈 Dome /************************************************************ FileName : linkstack.h Author : wang Version : v1....
基于单链表(也可以用数组)实现的程序内存管理,对内存的安全释放和开辟空间大小以及地址的管理和数据展示。 头文件:mymemory.h #pragma once #include<stdio.h> #include<stdlib.h> /* 记录开辟内存 */ void* mymalloc(size_t size); /* 记录释放内存 */ void myf...
环形单链表 基于环形单链表的增删改查。 源代码: /************************************************** 文件: circularLinked.h 环形单链表头文件 ----------------------------------------------- 函数: ... -----------------------------...
基于文本和结构体的数据操作: 包含文件读写。 头文件: #pragma once #include<stdio.h> #include<stdlib.h> #include<string.h> /*文件路径存储长度*/ #define MAX_PATH_LEN 128 /*文件数据字节数*/ #define MAX_LEN 1024 /*配置文件路径,...
基于数组实现的线性表: 包含增删查改 头文件:arraytable.h #pragma once #include<stdio.h> #include<stdlib.h> #include<memory.h> #define DATA_TYPE int struct array { DATA_TYPE* pStart;//数组首地址 int le...
多线程查找数据-1 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<time.h> #include<process.h> #include<Windows.h> int flag = 0;//全局变量,用于线程通信 /* ...
队列: 头文件:queue.h #pragma once #include<stdio.h> #include<stdlib.h> #include<memory.h> #define LEN 100 // 队列长度 /*线性队列*/ struct queue { int data[LEN]; int head; //头 int back; //...
头文件:list.h #pragma once #include<stdio.h> #include<stdlib.h> /* 声明双链表节点元素 */ typedef struct LIST_NODE { int value; struct LIST_NODE *per;//向前指针 struct LIST_NODE *next;//向后指针 }node;...
动态分配内存 动态分配,是指用户可以在程序运行期间根据需要申请或释放内存,大小也完全可控。动态分配不像数组内存那样需要预先分配空间,而是由系统根据程序需要动态分配,大小完全按照用户的要求来,当使用完毕后,用户还可释放所申请的动态内存,由系统回收,以备他用。 malloc和free是C标准库中提供的两个函数,用以动态申请和释放内存。 malloc()函数的基本调用格式为: void *mal...
函数指针:
一 指针的运算 指针可以作为算数运算,赋值运算和关系运算表达式的有效操作。但是,并非所有在这些表达式中使用运算符都可以处理指针变量。指针只能参与有限的几种算数运算。指针可以进行增 1 (++) 和 减 1(--),给指针加上一个整数(+或+=),从指针中减去一个整数(-或-=),以及用一个指针减去另外一个指针这几种运算。 示例: #include<stdio.h> #inclu...
什么是指针? 指针(pointer)是一个值为内存地址的变量(或数据对象)。 想要透彻搞懂它,就必须从计算即底层原理进行解释。 与指针紧密相连的就是内存:内存在物理上是由一组DRAM芯片组成,从功能讲,内存是一个数据仓库,程序在执行前要被载入到内存中才能被中央处理器(CPU)执行。作为程序员,我们无需了解内存的物理结构。操作系统将软件与硬件结合起来,给程序员提供了一种对物理内存空间的抽象...
自定义字符串函数实现: 头文件: /* 自定义字符串库头文件 MyString.h */ #include<stdio.h> #include<stdlib.h> #include<string.h> /* 字符串结构体 参数: P: 字符串首地址 参数 realLenght:字符串实际长度 ...
一 C 语言字符处理函数库ctype.h 字符处理函数库(Character-handling library),包含几个用于字符数据测试和操作的函数。每个函数接受的实参都是一个用整型数或EOF表示的字符。在 C 语言中 字符通常被当作整型数来处理,因为C语言中的字符通常是一个字节的整数。一般而言, EOF的值为 -1,但是某些硬件体系结构不允许在char类型变量中存储负值,所以,字符处理函数...
字符串是一个或多个字符的序列。在 C 语言中没有专门用于存储字符串的变量类型,字符串被存储在 char 类型的数组中。数组由连续的存储单元组成,字符串中的字符被存储在相邻的存储单元中,每个单元存储一个字符。如下图: 注意:数组末尾的字符 '\0' 是空字符( null character) ,在 C 语言中它标记字符串的结束。空字符不是 0 ,它是非打印字符,其 ASCII 码值是 (或等...
一 结构体: 结构体是一中构造数据类型 结构体的用途是把不同类型的数据组合成一个整体,相当于自定义数据类型 1.1 结构体的定义: struct [结构体名称] { 类型标识符 成员名称; 类型标识符 成员名称; 类型标识符 成员名称; ... ... } 1.2 声明和使用: #define _CRT_SECURE_NO_WARNINGS #include<stdio...
链表的定义: 链表是一种常见的重要的数据结构;它是动态地进行存储分配的一种结构。 链表示意图: 定义一个简单链表: /* File Name : linknode.h 定义链表结构体:UserInfo */ /* 链表结构体: 声明:age (年龄) name (姓名) next (下一个节点地址) */ struct UserInfo { //年龄 .
一 预处理: C语言是建立在适当的关键字,表达式,语句以及使用它的规则上。然而 ,C标准不仅描述C语言,还描述如何执行 C 预处理器,C标准库有那些函数,以及这些函数的工作原理。 C 预处理器在程序执行之前检查程序(故称为预处理器),根据程序中的预处理器指令,预处理器把符号缩写替换成其表示的内容。预处理器可以包含程序所需要的其他文件,可以选择让编译器查看那些代码。预处理器并不知道 C 。基本上...
一 C语言中的变量存储类别: 1 auto(自动) 2 register(寄存器) 3 static (静态) extern (外部) 其中, auto 和 register 变量属于自动分配方式,而 static 和 extern 变量属于静态分配方式。不同的分配方式下,变量的生存期,作用域和可见域各不相同。 二 作用域区分: 变量可分为局部变量和全局变量。 局部变量: 在函数内部定义...
C语言 头文件源文件及include包含指令 1- 头文件:(head),所以文件后缀是.h,head的简称。 头文件是源文件的辅助文件,一般把一些变量,函数定义到头文件,而函数的实现放在源文件。头文件主要解决可以拆分大的源文件,实现在在主函数中共享其他源文件的变量或函数。比如把输入/输出函数原型放在 stdio.h 中,把数学函数原型放在 math.h 中。头文件可以将源文件的有效信息提取出来,...
总结一下,自己脑子短路时可以查看一下。 一,位运算符: 逻辑运算符: &:位 ‘与’ ; ^: 位 ‘异或’ |: 位 ‘或’ ~: 位 ‘非’,取反 移位运算符: <<: 左移 >>: 右移 逻辑位运算都是以 (bit)为单位。 二: ‘~’ 非 ,取反 位取反的操作符为“~”,0变成1,1变成0,需要注意的是,位取反运算并不会改变操作数...