- 博客(33)
- 收藏
- 关注
原创 【数据结构】队列的简单操作
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点。入队列:进行插入操作的一端称为队尾,出队列:进行删除操作的一端为对头。
2022-05-21 08:48:55 969 3
原创 【数据结构】栈的简单操作
线性数据结构已经分享了顺序表、单链表和双向带头循环链表三种结构,接下来我们再分享两种结构分别是栈和队列;先来看看栈吧:栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除插操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则。压栈:栈的插入操作叫做压栈/进栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。队列:只允许在一端进行出入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的性质入队列:进行插入
2022-05-20 21:51:38 588
原创 LeetCode 题号:2 两数相加
题目:链接:力扣https://leetcode.cn/problems/add-two-numbers/刚看到题目时 我的思路是:将链表转换为一个十进制的数字,进行反转,接着两数相加, 然后取整数的各个为插入链表;即:最初我也是按照这个思路写的代码;如果链表的长度只有几位这种方法是可以跑过去的;但是我没有注意题目中链表的长度在1-100之间;那这样存在一个问题long long 类型数据最大2^63-1,当链表太长时没有类型可以放下由链表变换来的数字;那这种方法也就是错误的方法。.
2022-05-10 18:45:48 355
原创 【数据结构】带头双向循环链表
上一篇博客写了链表中最简单的单链表的实现,今天一起来看看链表中最复杂的结构带头双向循环链表的实现吧!带头双向循环链表:结构最复杂,一般用在单独存储数据,也是实际中使用最多的链表结构。结构图如下:下面看看它的实现吧!链表单个节点的结构带头双向循环链表要实现双向循环,那通过一个节点必然要能找到它的上一个元素,并且也要找到它的下一个元素,还要储存这个节点的数据,所以单个节点的结构体成员有三个:1)存储上一个节点位置的指针;2)存储下一个节点位置的指针;3)存储数据的量代码:typ
2022-05-09 22:09:05 753 2
原创 【数据结构】实现单链表
前言上一篇博客写了顺序表,我们都知道顺序表有两个优点1.物理空间连续,2.下标随机访问,也是因为它的两个优点让它产生了一下缺点:1.空间不够时需要扩容,而扩容呢有存在性能消耗;2.在头部插入数据、在某个位置插入数据、在某个位置删除数据它需要挪动数据,这就存在效率低的问题。解决这来两个问题我们可以用链表。链表是在逻辑上连续在物理上又不连续的一种结构,它的逻辑上连续是通过指针来完成的。链表又可分为:单向或者双向链表、带头或者不带头链表、循环或者非循环链表,这几种组合起来有8种结构:常用的有:
2022-05-02 10:21:18 745 7
原创 【数据结构】实现顺序表
目录一、 顺序表的概念及结构二、实现顺序表1.初始化2.打印3.扩容4.尾插5.头插6.头插7.尾删8.头删9.删除在pos位置的数9.1改进后的头删9.2改进后的尾删10.在pos处插入一个数10.1改进后的头插10.2 改进后的尾插11.修改数据12.查找数据13销毁数组一、 顺序表的概念及结构顺序表示用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般采用数组储存,在数组上增删查改。......
2022-04-23 10:27:48 356 7
原创 【C语言进阶】程序环境和预处理
1. 程序的翻译环境和执行环境在ANSI C的任何一种实现中,存在两个不同的环境 第一种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。 第二种是执行环境,它用于实际执行代码。1.1 翻译环境组成一个程序的每一个源文件通过编译过程分别转换成目标文件。 每个目标文件有链接器捆绑在一起,形成一个单一而完整的可执行程序。 链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库,将其需要的函数也链接到程序中。...
2022-04-15 09:25:42 169
原创 【C语言进阶】文件操作
为什么使用文件我们都知道,通常情况下,程序的结束也就意味着里面存储的数据将会被销毁,但是有些情况下我们需要保存数据,那就要用到文件了,例如我们要做一个通讯录系统,我们肯定是想要输入的联系人的信息保存下来,这时候就要用文件来保存数据。使用文件我们可以将数据直接存放在电脑的硬盘上,做到数据的持久化。什么是文件硬盘上的文件就是文件。在程序设计中,我们一般讲的的文件有两种(从文件功能的角度来分类):程序文件、数据文件 。程序文件包括源程序文件(后缀为 .c),目标文件(windows环境后
2022-04-13 17:19:59 505 6
原创 【C语言进阶】动态内存管理
1.动态内存分配存在的原因内存分配的方式有种:1、静态内存分配,2、动态内存分配。静态内存分配按照内存开辟的位置又可分为两种,一种为局部变量,由系统在栈区上开辟,另一种为全局变量和静态变量,由系统在静态区上开辟。例如:#include<stdio.h> int b = 10;//全局变量,在静态区开辟四个字节int main(){ int a = 20;//局部变量,在栈区开辟四个字节 int arr[10] = { 0 };//在栈区开辟10个字节的
2022-04-06 16:52:16 1599 3
原创 【C语言进阶】结构体的内存对齐
内存对齐先来看一段代码:我们可以看到 struct S1 与struct S2的结构体成员是相同的,为什么分别定义的变量的大小却不同呢?其实这就涉及到结构体对齐的知识。那我们一起来看看吧!要想正确的计算结构体的大小,我们就得先掌握结构体的对齐规则:1. 第一个成员在与结构体变量偏移量为0的地址处。2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。对齐数 = 编译器默认的一个对齐数与该成员大小的较小值。(vs中默认的对齐数是8。Linux环境下没有默认对齐数,在没有
2022-03-25 10:51:09 240 5
原创 【C语言进阶】指针(进阶2)
目录回顾:数组参数、指针参数一维数组传参二维参数传参一级指针传参二级指针传参回顾:前面关于指针的内容我们已经学习了指针数组和数组指针我们来一起看看下面的代码的意思int arr[5] 这是一个数组,有五个元素,元素的类型是int型。int *parr[10] :这是一个数组,有10个元素,每个元素的类型是int*类型的指针。int (*parr2)[10]:这是一个指针,该指针指向一个数组,数组有10个元素,元素的类型是int型int (*parr3[1.
2022-03-24 11:26:14 1573 8
原创 【C语言进阶】模拟实现memcpy memmove函数
一、memcpy函数上一篇博客我们已经实现了 strcpy函数,有同学可能会问已经有了 strcpy 函数,为什么还要有memcp函数呢? 其实strcpy函数他只能操作字符串,对其他类型它是没有办法操作的,比如 int arr[5] = {1, 2, 3, 4, 5}像这个整型数组strcpy函数是不能进行操作的,只能运用memcpy函数,下面我们先看一下memcpy函数:可以看到它的形参有三个 目标空间地址void* dest, 数据来源的地址const void*src,以及需要拷贝的字节
2022-03-23 11:14:24 804 10
原创 【C语言进阶】模拟实现 strlen strcpy strcat strcmp strstr
一、 strlen函数#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <assert.h>//计数法//size_t my_strlen(const char* p)//{// assert(p);// size_t count = 0;// while (*p)// {// p++;// count++;// }// return count;//}//指针减指针//
2022-03-23 11:14:01 953
原创 解除你的困惑:指针中*运算符和++运算符的组合应用
前言:本篇博客讨论 *运算符和++运算符的组合应用。如果你很好的理解(*p++)+= 1,那本篇博客可能对你没有帮助。
2022-03-16 21:49:37 1102 11
原创 【C语言进阶】指针(进阶 1)
目录字符指针数组指针数组指针的使用关于指针的初级内容请移步下面的一篇博客【C语言基础】指针(初阶)_gwPersevere的博客-CSDN博客字符指针我们之前在介绍指针类型时提到过一种指针类型为字符指针:char *通常情况下我们会这样使用:#include <stdio.h>int main(){ char ch = 'a'; char* pr = &ch; *pr = 'c'; return 0;}其实字符指针还..
2022-03-09 12:22:06 796 2
原创 【C语言基础】指针(初阶)
目录1.指针的类型2.指针类型的意义3.野指针3.1野指针形成的原因3.2如何规避野指针4.指针-指针5.二级指针6.指针数组关于指针的概念以及指针的大小请看这篇博客:写文章-CSDN博客https://mp.csdn.net/mp_blog/creation/editor/1222914281.指针的类型我们都知道一个变量是有类型的,如int型、 char型、float型。那么一个指针是否有类型呢?我们可以这样思考一下:指针是用来存储变量的地址的,变量有不同
2022-03-04 19:52:04 624 1
原创 【牛客网练习题】倒置字符串
方法一 :单个打印单词思路:题目要求将一句话的单词倒置,从一句话的最后往前寻找空格,记录空格位置,从这个位置的下一个位置开始打印,并且将空格的位置赋值为’\0‘作为打印下一个单词的结束点,循环。代码如下:#include <stdio.h>#include <string.h> int main(){ char arr[100] = {0}; gets(arr); char* start = NULL; char* end = N..
2022-03-03 21:20:28 209
原创 【C语言基础】大小端字节序
什么是大端小端:大端(存储)模式,是指数据的低位保存在内存的高地址处,而数据的高位保存在低地址处。小端(存储)模式,是指数据的低位保存在内存的低地址处,而数据的高位保存在高地址处。怎样确定电脑是大端存储模式还是小端存储模式呢?我们不妨先看一下一个数在内存的存储,例:i=0X1223344这样的情况下我们只要拿出一个字节看看它的内容不就能知道是那种存储方式了吗?代码实现#include <stdio.h>int test(){ int i = 1;.
2022-02-26 12:02:10 362 6
原创 【C语言基础】strlen函数的三种实现方法
目录1.前言1.计数器2.递归3.指针-指针1.前言在实现strlen函数之前我们要先了解strlen函数怎样工作的;在这里我们重点看一下Return Value的内容,翻译过来就是:其中每个函数都返回字符串中的字符数,不包括终端 NULL。大致的意思就是strlen函数在运行时每碰到一个字符就加一,当碰到NULL也就是'\0'时会返回前面所有加一的和。我们知道一串字符串在数组中存储时是以’\0‘结尾,即知道这些我们就能实现strlen函数啦1.计数...
2022-01-27 19:41:25 3166 7
原创 【C语言基础】三子棋小游戏
目录1、程序实现逻辑代码2、菜单函数3、游戏实现函数3.1初始化棋盘3.2打印棋盘3.4电脑下棋4.代码汇总5.代码运行1、程序实现逻辑代码这里用 do while 语句实现玩家多次运行游戏void test(){ srand((unsigned int)time(NULL));//用于电脑下棋时生成随机坐标 int input = 0; do { mnue();//菜单 scanf("%d", &input); s...
2022-01-26 11:16:27 2875
原创 【C语言基础】折半查找法
1.问题描述:有15个数由大到小顺序放在一数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值,如果该数不在数组中,则输出“无此数”。2.实现代码:#include<stdio.h>int main(){ int arr[] = { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 }; int left = 0; int right = sizeof(arr) / sizeof(arr[0])-1;//计算数组最后一个数字的下标 i
2022-01-17 16:57:56 4452 3
原创 【C语言基础】指针概念及指针变量的大小
1.指针的概念想要清楚的理解指针概念我们必须先弄清楚数据在内存中是怎样储存的,又怎样读取的。在电脑的内存区里每一个字节都有一个编号,这个编号就是地址。我们在程序中定义一个变量,对程序进行编译时,系统会根据数据的类型分配给这个变量一定长度的空间,如int型分配四个字节。那这四个字节的编号就是这个变量的地址。反过来说这个变量就储存在这个地址内。你可以理解为酒店里的房间号。由于通过地址能找到这个变量,可以说地址指向这个变量。就像你住酒店时,你朋友可以通过房间号码找到你。这...
2022-01-03 20:21:17 3342
原创 【C语言基础】变量、常量
过去是一个幽灵,虚无缥缈,没什么影响力。只有未来才有分量——《你当像鸟飞往你的山》一.变量1、变量必须先定义后使用,在定义是指定该变量的名字和类型。int,float,char为定义变量类型,a,b,c,ch为变量名称。2、变量可以分为两种。一是全局变量, 二是局部变量。定义变量可能有3中情况:(1)在函数的开头定义#include <stdio.h>int main(){ int a; return 0;}(2)在函数内...
2021-12-15 21:11:32 1647 6
原创 【C语言基础】printf函数
一、printf函数1.printf函数被设计用来显示格式串的内容,并且在该格式串中的指定位置插入可能的值。 printf函数的一般形式为: printf(格式串,表达式1,表达式2,...); 格式串包含两部分:普通字符和转换说明。转换说明是以字符%开头。转换说明是用来表示打印过程中待填充的值的占位符,可以想象成去你去图书馆看书,先要找到一个位置将书包放在位置,等你找到想看的书在返回位置...
2021-12-11 19:51:20 1497
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人