C
文章平均质量分 88
HT . WANG
Think Twice , Code Once
展开
-
字符操作库函数以及内存操作库函数 C语言实现
字符操作库函数 strlen strlen判断结束的标志为找到字符串中的'\0',也就是说如果字符串中间出现'\0'将会导致strlen停止 即strlen的返回值是'\0'前所出现的字符个数 然而此时字符串长度并非真实长度,但一般很少出现字符串中间会有‘\0’size_t strlen(const char* str)模拟实现my_strlen:方式1:直接计数 遍历整个字符串 直至找到“\0”为止 否则计算器实现加一操作int my_strlen(const cha...原创 2020-11-26 15:20:22 · 267 阅读 · 0 评论 -
C语言实现通讯录【一】(未优化)
通讯录实现 结构体定义: 定义结构体peoinfo 包括姓名, 性别,年龄,电话号码,地址,QQ等#define MAX_NAME 20#define MAX_TELE 12#define MAX_ADDR 100#define MAX_QQ 12#define MAX_SEX 5#define MAX_PEOPLE 1000typedef struct peoinfo {//数据结构体 保存数据信息 char name[MAX_NAME]; char tele[MAX_原创 2020-11-26 22:11:39 · 1337 阅读 · 0 评论 -
C语言实现通讯录【二】(动态内存开辟,文件数据存储)
C语言实现通讯录【二】在C语言实现通讯录【一】的基础上进行优化,主要实现两大模块: 动态内存开辟 文件数据存储 动态内存开辟:考虑到通讯录的大小无法固定,在C语言实现通讯录【一】版本上定义一个足够大的结构体数组进行通讯录信息存储,设置数组大小为固定大小1000,很明显造成了内存空间浪费,也存在超出存储空间的情况,对此,固定大小的数组存储就显得有点太low了,为何不试试动态内存开辟? 通讯录初始化 首先修改通讯录结构体,将原有存放信息的结构体数组改为结构体指针,存放地址,原创 2020-12-01 15:57:51 · 661 阅读 · 0 评论 -
C语言实现顺序表(增删查改等数据管理)
顺序表seqlist小伙伴们,提到顺序表会想到什么呢?数组?还是链表?其实,数组和链表都是属于线性表,而链表在逻辑上是线性的,并非物理存储上也为线性;而数组无论在逻辑上还是物理存储上均为线性所以说,顺序表就是用一段连续的物理地址存储单元上依次存储数据元素的线性结构常见最为典型的就是数组了,在数组里完成增删查改顺序表主要分为两类静态顺序表:使用定长数组存储数据 动态顺序表:动态开辟存储空间存储顺序表结构定义:顺序表结构采用C语言结构体定义,为实现动态顺序表,将定义整型(SL原创 2020-12-08 22:06:49 · 1132 阅读 · 0 评论 -
C语言实现链表【一】(无头单向非循环链表)
无头单向非循环链表看到这个标题,是不是有小伙伴已经懵了呢?只学过链表,怎么还有个无头和有头呢?怎么还有个循环和非循环呢?怎么还有个单向和双向呢?一连串的疑问。。。其实这些都是链表的表示形式,只不过大部分人只接触了最简单的单链表,也就是我们这里提到的无头单向非循环链表,最简单的链表结构表示形式话不多说,直接上图更直观一些 单链表结构定义: 熟悉了单链表的结构,下面来考虑如何在链表中实现数据存储呢?链表是由多个节点按照一定的逻辑顺序连接形成的,每一个节点都由两部分组成,一...原创 2020-12-09 11:14:54 · 754 阅读 · 0 评论 -
C语言实现链表【二】带头双向循环链表
带头双向循环链表 结构描述: 带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以店会发现结构会带来很多优势,实现反而简单了,后面我们代码实现了就知道了。// 2、带头+双向+循环链表增删查改实现typedef int LTDataType;typedef struct ListNode{ LTDataType _data; struct ListNode* _next; struct原创 2020-12-21 16:37:48 · 1254 阅读 · 0 评论 -
C语言实现栈和队列
栈 栈的理解: 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO (Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。 ...原创 2020-12-23 16:11:30 · 2019 阅读 · 0 评论 -
C语言实现堆
堆的实现今天来介绍一个新的数据结构:堆大家都记得,内存空间存储中,将局部变量,函数参数等存储在栈上,系统自动释放;全局变量存储在静态存储区;动态开辟的内存空间都在堆上开辟,系统不会自动释放空间,由程序员手动释放。当然,此处的堆是内存空间的一种存储结构今天我们所介绍的堆结构是一种二叉树结构,主要应用于 系统目录的存储,比如linux系统下目录的存储方式就是一个二叉树的堆来存储,以根目录下分级目录存储堆是一种二叉树的结构,满足二叉树的性质堆的性质:1.堆中某个节点的值总是不大于或不小原创 2021-01-06 16:24:22 · 1713 阅读 · 0 评论 -
C语言实现二叉树
C语言实现二叉树今天我们来介绍一下二叉树,上一节说到堆的实现,即为一种二叉树的顺序结构的应用,通过顺序表来维护堆二叉树也可以通过链式结构来实现,即二叉链,结构如下图所示。二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。 通常的方法是链表 中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结 点的存储地址 。例如下图这棵二叉树:其二叉链存储表示如下:下面具体通过代码来详细了解二叉链的实现过程: 二原创 2021-01-12 11:37:37 · 4062 阅读 · 0 评论