初识c语言
神厨小福贵!
C/C++/Linux
展开
-
BF算法优化-------KMP算法
百度百科:KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n)。上图中我们眼睛可以看出来k的位置 但是在程序中实现呢 ?通常就是弄个next数组来存放应该j应该回退的位置k..原创 2021-10-30 17:54:10 · 360 阅读 · 1 评论 -
BF算法~
先来看BF算法是干嘛的BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。(取自百度百科)来看图解详细过程:还有在代码中所说的不能以主串的越界条件来判断是否将子串匹配完:接下来来看代码:int BF_Search(co..原创 2021-10-29 15:34:14 · 242 阅读 · 0 评论 -
Linux终端C语言实现图片拷贝
我们正常的图片复制就很简单 右键复制 然后粘贴就好了 今天在LInux终端使用c语言对照片进行拷贝首先得知道一点 图片其实是由二进制0101组成的 如下图的照片二哈.jpeg然后进行代码实现:...原创 2021-10-23 18:07:37 · 1597 阅读 · 0 评论 -
删除顺序表中所有的的重复数据
顺序表的结果设计如下所示顺序表的结构体设计和头节点的结构体设计如下链接:顺序表的插入_神厨小福贵!的博客-CSDN博客按位置插入我们知道 顺序表的特点就是 无论在逻辑上还是地址上都是连续的先看顺序表的结构体:#define MAXSIZE 10 //顺序表一般固定大小struct SeqList{ int data[MAXSIZE]; int capacity; //顺序表容量大小 int cursize; //顺序表中有效数据节点个数}SeqList , *PSeqList; //结构体指针和原创 2021-10-22 21:33:51 · 202 阅读 · 0 评论 -
const修饰的指针常量和常量指针
const char * p 指的是:p 是一个指针(变量),它指向一个常量字符(const char)char * const p 指的是:p 是一个常量指针(const p),它指向一个字符(变量)这有一个小办法 从右往左取结合 第一个就是const char 就是指向一个常量字符 第二个就是const p 就是一个常量指针(p是指针)...原创 2021-10-20 17:30:16 · 92 阅读 · 0 评论 -
顺序表的删除(按位置删、头删、尾删)
顺序表的结构体设计:#define MAXSIZE 10 //顺序表一般固定大小struct SeqList{ int data[MAXSIZE]; int capacity; //顺序表容量大小 int cursize; //顺序表中有效数据节点个数}SeqList , *PSeqList; //结构体指针和结构体别名按位置删除:bool Eraser(PSeqList plist, int pos){ assert(plist !=原创 2021-10-20 17:07:10 · 1072 阅读 · 0 评论 -
顺序表的尾插和头插
先来看顺序表的结构体设计#define MAXSIZE 10 //顺序表一般固定大小struct SeqList{ int data[MAXSIZE]; int capacity; //顺序表容量大小 int cursize; //顺序表中有效数据节点个数}SeqList , *PSeqList; //结构体指针和结构体别名尾插:void Push_Back(PSeqList plist , int val){ assert(plis原创 2021-10-20 14:32:18 · 680 阅读 · 0 评论 -
顺序表的插入
按位置插入我们知道 顺序表的特点就是 无论在逻辑上还是地址上都是连续的先看顺序表的结构体:#define MAXSIZE 10 //顺序表一般固定大小struct SeqList{ int data[MAXSIZE]; int capacity; //顺序表容量大小 int cursize; //顺序表中有效数据节点个数}SeqList , *PSeqList; //结构体指针和结构体别名再来看结构体的数据按位置插入:bool In...原创 2021-10-20 12:18:46 · 145 阅读 · 0 评论 -
如何用两个栈实现一个队列?
先看分析来看代码原创 2021-10-16 20:09:50 · 70 阅读 · 0 评论 -
最详细的----->一维数组实现杨辉三角
代码循环部分的解析在代码之后先来看代码#include<stdio.h>int arr[20];int main() { arr[0] = 1; int n; scanf_s("%d", &n); for (int i = 0; i < n; i++) { for (int j = i; j >= 0; j--) { if (j == 0 || j == i) { arr[j] =原创 2021-10-13 22:17:41 · 391 阅读 · 0 评论 -
单链表的逆置
推荐大家去看这个:写的超级好使用头插法就地逆置单链表_C语言_哔哩哔哩_bilibili源码在评论区https://www.bilibili.com/video/BV1854y1e7gK?from=search&seid=3444059649517516692&spm_id_from=333.337.0.0先说思路: 因为头节点plist与第一个数据节点相连,因此先给头节点plist与第一个数据节点断开来,让plist->next不断地赋值给p->nex...原创 2021-10-03 00:31:26 · 146 阅读 · 0 评论 -
单链表相交问题
问题:1.单链表如何判断是否相交?2.单链表相交点的地址如何求出?解决:先来说一下单链表相交的样式图是图一样子的还是图二样子的是图二样子的,因为图一样子那个相交点的next域会有两个指向,所以只能是第二中样子的1.判断两个单链表相交思路:思路有了,代码实现如下:bool Intersect(PNode plist1, PNode plist2){ //assert Node *p = plist1; Node *q = plist2; for(p;..原创 2021-09-30 00:13:06 · 193 阅读 · 0 评论 -
带头节点单链表的增删改查
单链表有很多结构循环单链表,有头节点的单链表,无头节点的单链表,双节点单链表,以下源码是以有一个头节点的单链表为例写的增删改查的各种功能,就是下图然后各个注释也在函数后面写着,这玩意确实还挺难,源码均已测试,vs2019运行妥妥的废话不多说直接来看全部源码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>typedef int Elem..原创 2021-08-23 20:17:29 · 227 阅读 · 0 评论 -
时间复杂度与空间复杂度
先来说一下定义:时间复杂度:计算的不是时间 而是计算大概运行次数空间复杂度:不计算空间 而是计算大概定义的变量个数时间复杂度:就拿最经典的斐波那契数列和二分查找来说以下代码就是斐波那契数列的时间复杂度的long long Fibonacci(size_t N){ return N < 2 ? N : Fibonacci(N - 1) + Fibonacci(N - 2);}自己画的,略微丑一些 多多包涵所以它的时间复杂度是O(2^n),根据大家电...原创 2021-08-08 17:34:28 · 109 阅读 · 0 评论 -
二级指针和二维数组
c语言中的指针我相信很多人都被整懵b过,尤其二级指针和二维数组那块根本不知道指向的是哪些值,我最近也是学了这些个二维数组和二级指针的关系,也就是懂点皮毛,顺便加深一下这方面的知识来浅谈一下,如有错误,必定虚心求教!首先一级指针和一维数组的关系:#include<stdio.h>int main() { int ar[3] = {1,2,3}; int* arp = ar; return 0;}vs中调出监视窗口va一维数组的数组名代表的是数组首元素的地址..原创 2021-07-30 21:25:42 · 478 阅读 · 0 评论 -
“;“分号空语句的使用
";"不仅有结束语句的作用,在一些情况下它代表着空语句#include<stdio.h>int main(){ for (int i = 1; ;i++) { printf("I love you"); } return 0;}在上述代码中 死循环加上打印当给for后面加上;之后#include<stdio.h>int main(){ for (int i = 1; ; i++); { printf("I love you"); }原创 2021-07-12 18:25:08 · 418 阅读 · 1 评论 -
布尔(bool)值需注意事项
布尔值就两个值真或假,其中的假代表的是0,其他任何非零的数都代表真。布尔值占一个字节(八个二进制位)#include<stdio.h>int main(){ bool x = 0; \\bool x = true; \\7 6 5 4 3 2 1 0(占一个字节,八个二进制位,使用的时候只使用最后一位); \\0 0 0 0 0 0 0 0 bool y = 1; \\ 0 0 0 0 0 0 0 1 return 0;}这里再说一点,在c++(.cpp)中bool原创 2021-07-12 16:58:45 · 765 阅读 · 0 评论 -
从底层剖析i++和++i的区别与相同点
大家第一时间想到i++与++i的区别就是一个是先加再用,一个是先用再加。相同点:#include<stdio.h>int main(){ int a = 10; a < 20; a++; printf("%d", a); return 0;}上述代码打开反汇编,显示出来的机器码是这样的而当我们输入代码#include<stdio.h>int main(){ int a = 10; a < 20; ++a; printf("%d",原创 2021-07-03 15:35:13 · 232 阅读 · 0 评论 -
# 编程之路的开启
编程之路的开启今天初始c语言,收获颇多,来分享一下我的一些小小的心得我是一个双非一本的一位机械学生,自我觉得机械这方面可能不是那么适合我,就想着走编程这条路,刚开始的时候也没有系统的学习过编程也就在b站看过一些python的课程,学到了爬虫那块就没再学了,然后又是在零碎时间学了MySQL(当然都是一些比较基础的东西),最近下定决心一定要走好编程这条路,就从c语言开始学。然后操作系统,数据算法,最后的话准备走Java的后端开发(希望可以学懂Java)学编程的初衷的话还是单纯的认为IT圈的薪资较高,后原创 2021-05-27 23:59:37 · 277 阅读 · 1 评论