C语言入土之路
文章平均质量分 90
从头开始的c语言,尽量详细。
Елена_
既不伟大,也不卑微。
展开
-
[数据结构初阶收尾篇]一篇文章带你把二叉树撕成二叉树条
一个标题哼哼啊啊啊啊啊啊树是什么树的相关概念树的表示二叉树一些特殊的二叉树二叉树的性质用性质来做点题目吧二叉树的顺序结构堆堆的实现堆的插入堆的删除堆排序topK问题二叉树的链式结构你以为是增删查改吧?不,是遍历!前序、中序以及后序遍历层序遍历劈里啪啦吓人的题目树的节点个数树的叶子节点个数第k层的节点个数二叉树销毁二叉树的最大深度二叉树寻找值为x的节点单值二叉树相同的树对称二叉树反转二叉树二叉树的前序遍历另一棵树的子树判断二叉树是不是完全二叉树二叉树遍历最后菜鸡大学生门前有两棵树,一棵是高数,一棵是二叉树原创 2022-05-02 08:00:00 · 951 阅读 · 130 评论 -
[十大排序]有的人图画着画着就疯了(1.5w字详细分析+动图+源码)
一个正经严肃的标题啥是排序呢?常见的排序算法及算法实现1. 直接插入排序2.希尔排序3.选择排序4.堆排序菜鸡大学生的数据结构——排序篇注意:以下未标注的图片都是纯手工绘制,开放一切权限,希望能够帮到你。同样是注意:将我的图片说成是你自己画的的行为是不可以的。祝你愉快~啥是排序呢?给你一串数据,我们可以按照一些条件将数据按照递增或者递减的方式进行排列,比如计算机里面的文件:排序在生活中还是很有用的,比如我们可以通过首字母很快找到通讯录的联系人,找到最大值和最小值,精确找到某一天的消息…原创 2022-04-24 18:58:16 · 5424 阅读 · 168 评论 -
[数据结构]有些事不见不知道——栈和队列刷题 :有效的括号、用栈实现队列、用队列实现栈、循环队列
人见人爱目录君有效的括号分析时间代码用栈实现队列用队列实现栈设计循环队列喜闻乐见的分析环节代码实现数组版本链表版本一些栈和队列的选择题最后菜鸡大学生的数据结构——刷题篇5磕磕绊绊终于到了栈和队列,菜鸡大学生在水完一篇文章之后心情极佳鸡血上头,决定对栈和队列的题目进行一波制裁。结果痛心地发现栈和队列这些数据结构c语言是没有现成的库的,它们的代码还得自己手敲一遍,遂,cv。有效的括号给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足原创 2022-04-22 01:54:28 · 1372 阅读 · 131 评论 -
[数据结构]有些事见了就知道——栈和队列
(我老婆镇楼)菜鸡大学生摸了一个星期的鱼,又回来写博客了。其实是在忙程序设计作业。(顺便摸了一个星期的鱼)总之先把栈和队列写完。栈啥是栈呢?栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out) 的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。栈的实现栈可以由链表或者顺序表去实现,由于.原创 2022-04-11 01:00:00 · 928 阅读 · 162 评论 -
[数据结构]我滴双链表完成辣,Ура
在淦了四篇刷题笔记之后,菜鸡大学生想起她之前在单链表挖的坑还没填。遂,填。有一说一菜鸡大学生的坑品还是可以的。下一篇是动图教程哦,所以…(暗示)开搞!双链表(今天的攻略对象)和上次的单链表相比,今天要写的双链表有以下不同:带哨兵位的头结点。双向的,每个节点不仅可以指向下一个,还可以指向上一个。循环链表,最后一个节点指向第一个节点。那么,开始准备吧双链表的本体加上一个前驱的指针,欸嘿嘿。typedef int ListDataType;typedef struct Lis.原创 2022-04-02 04:15:00 · 2260 阅读 · 133 评论 -
[数据结构]题海啊,全是水(四)相交链表、环形链表、环形链表II
这个是一个目录哦相交链表你说的链表,它相交吗?交啊,交在哪啊?代码环形链表分析代码环形链表II分析比啥都重要代码最后菜鸡大学生的数据结构——刷题篇4链表刷题最后一篇,好耶!再写下去菜鸡大学生要编不出前言了,或许本来就不需要前言?啊——相交链表给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:这道题简单来说就两个思路:是否相交?如果是,交点在哪?我们先原创 2022-03-29 12:54:41 · 2799 阅读 · 156 评论 -
[数据结构]题海啊,全是水(三)链表中倒数第k个节点、链表的回文结构、链表分割
这是一个目录链表中倒数第k个节点解法一解法二链表的回文结构思路代码链表分割思路代码最后菜鸡大学生的数据结构——刷题篇3我们的第三题小宝贝儿回归了!菜鸡大学生明白,笔试oj题目还是以牛客网为主的,于是下定决心,准备离开力扣,去牛客网进行一番打拼。不幸的是,写又写不过,蒙又蒙不着,远程全面闪避,近身降维打击,被人类的智慧之光段错误轰炸的两面焦香。遂,润。“刷题不慎以命填呐——” ——来自某崩溃菜鸡大学生。链表刷题已经过半了,不出意外的话这个是倒数第二篇,再写一篇之后我们就可以写双链表了原创 2022-03-26 04:00:00 · 1641 阅读 · 95 评论 -
[数据结构]题海啊,全是水(二) 合并两个有序链表,复制带随机指针的链表
总之这个是目录合并两个有序链表思路一些注意点:代码复制带随机指针的链表解法1代码解法2最后菜鸡大学生的数据结构——刷题篇2我想细心的读者已经发现了,今天只有两道题目,难道菜鸡大学生也要向时代妥协,转向研究快餐阅读了吗?显然不是,只是菜鸡大学生最近白开水喝醉了,过几天就好了。好了我编不下去了我们开始正题吧。合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入: l1 = [1,2,4], l2 = [1,3,4]输出原创 2022-03-23 00:06:42 · 3119 阅读 · 140 评论 -
[数据结构]题海啊,全是水(一)移除链表元素、反转链表、链表的中间节点
这个是目录移除链表元素分析第一种情况第二种情况第三种情况代码反转链表第一种解法第二种解法链表的中间节点解法一解法二最后菜鸡大学生的数据结构——刷题篇1自从宇宙大爆炸以来,上课就和课后作业联系起来。大学生不能失去刷题,正如西方不能失去耶路撒冷。 我们的菜鸡大学生也知道这一点,虽然内心有一万个不愿意,但是还是打开了leetcode,破防了三天三夜,编出了这篇文章。敬请见证…移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节原创 2022-03-20 00:14:07 · 2212 阅读 · 166 评论 -
[数据结构]好好思考一下吧,单链表真的那么难写吗?
故事还在继续,菜鸡大学生写完顺序表,感觉十分良好,萌生了把数据结构都撸一遍的想法。他自信满满的翻到后面的高阶数据结构,然后合上了,做出了一个伟大的决定:还是先挑软的欺负。于是,今天的受害者就是单链表。链表什么是链表?链表,是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接顺序实现的。(链表的娇容)好,我们已经解决了什么是,下面来解决为什么要有链表的问题,是顺序表不香了吗?香,特香,嘎嘎香。但是,顺序表存在几个小问题:头插/指定位置删除,时间复.原创 2022-03-16 01:31:55 · 6530 阅读 · 131 评论 -
[数据结构]你已经是个大人了,快来写顺序表吧
这是一个目录线性表顺序表目标一点简单的准备工作初始化销毁打印增容函数接口函数尾插头插尾删头删指定位置增删函数查找指定位置在指定位置插入数据在指定位置删除数据头尾函数的船新写法最后又到了 编故事 啊不讲故事的时间,还是那个菜鸡大学生。在高数和c语言的毒打之下,终于挺过了大一的上半学期。精通打退堂鼓这一门乐器的他知道,如果不继续往下学习。很可能他当程序员的理想就要夭折,遂,淦顺序表。线性表线性表是啥?线性表(linear list)是n个具有***相同特性***的数据元素的有限序列。常见的线性表原创 2022-03-12 01:34:45 · 2199 阅读 · 153 评论 -
[数据结构]什么是好的代码?时间复杂度和空间复杂度告诉你
算法效率我们现在先不急着讲算法效率,我们先试想一个场景:有一个很菜的大学生,打开了一个叫力扣的刷题网站,随便炫了一道题,花了几十分钟拼死拼活写出了一段代码,点击运行,运行时间1001ms,直接超时,当场去世。然后缝缝补补,改改bug,一天就这么过去了。还是这个很菜的大学生,大学生觉得自己刷题的策略很有问题,于是在做每一道题目前都会先花几分钟思考一下:这个题型是不是见过?有没有比较好的解法?要不要去考虑一些复杂的情况?虽然这个大学生还是很菜,但是他做题的体验感上去了很多:省去了一些微调代码的时间,代码变原创 2022-03-09 18:39:41 · 632 阅读 · 117 评论 -
c语言进阶篇:宏
define本质上是将文本内容在编译时进行替换,又因为他可以替换参数所以就出现了宏。#define替换文本语法:#define name stuff举一个例子#define MAX 1000#define reg register //为 register这个关键字,创建一个简短的名字#define do_forever for(;;) //用更形象的符号来替换一种实现#define CASE break;case //在写case语句的时候自动把 .原创 2022-03-01 13:39:20 · 1351 阅读 · 19 评论 -
c语言文件操作
爆肝一个假期的笔记补档。这个月可能会发十几二十几篇吧。这个是目录为什么使用文件什么是文件程序文件数据文件文件名文件的打开和关闭文件打开和关闭的函数使用文件的顺序读写fprintf和fscanf与原函数对比fscanf 和scanf的对比sprintf 和sscanf与原函数的对比输入输出函数文件的随机读写fseekftellrewind文本文件和二进制文件文件结束标志的判定文件缓冲区为什么使用文件我们前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是原创 2022-02-22 13:25:17 · 408 阅读 · 4 评论 -
c语言自定义类型(位段,枚举,联合)
爆肝一个假期的笔记补档。这个月可能会发十几二十几篇吧。这个是目录位段什么是位段位段的内存分配位段的跨平台问题枚举枚举的使用联合联合类型的定义联合的特点联合体大小的计算练习位段位段是通过结构体实现的。(也会有对齐之类的)(位段以比特位作为单位)什么是位段位段的声明和结构是类似的,有两个不同:位段的成员必须是char、 int、unsigned int 或signed int 。位段的成员名后边有一个冒号和一个数字。如struct A{ int _a:2; int _b:5;原创 2022-02-20 17:44:29 · 375 阅读 · 1 评论 -
模拟实现通讯录(动态静态与文件操作版本)
爆肝一个假期的笔记补档。这个月可能会发十几二十几篇吧。这个是目录)确定功能静态版本实现contact.h:contact.ctest.c确定功能可以存放1000个人的信息。人的信息:名字,年龄,电话,住址,性别。增加联系人。删除联系人。查找联系人。修改联系人。排序。静态版本实现contact.h:#pragma once#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include<string.原创 2022-02-20 00:38:22 · 393 阅读 · 2 评论 -
c语言字符串函数和内存函数
爆肝一个假期的笔记补档。这个月可能会发十几二十几篇吧。这个是目录)什么是字符串关于‘\0’的认识strlenstrcpystrcatstrcmpstrncpystrncatstrstrstrtokstrerrormemsetmemcpymemmovememcmpperror什么是字符串 "hello world.\n"这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串。C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中或者字符数原创 2022-02-19 22:16:59 · 409 阅读 · 1 评论 -
c语言数据存储
爆肝一个假期的笔记补档。这个月可能会发十几二十几篇吧。这个是目录整形在内存中的存储原反补转换方法unsigned和signed关键字有符号整数和无符号整数取值范围变量内容的存入和取出先有空间,再有内容大小端存储浮点数在内存中的存储存储规则练习整形在内存中的存储原反补对于有符号数来说,一般用最高比特位来表示符号位。用0表示“正”,用1表示“负”计算机中的有符号数有三种表示方法,即原码、反码和补码。任何数据在计算机中,都必须转化为二进制,因为计算机只认识二进制。如果一个数据是负数,那么就原创 2022-02-19 21:59:06 · 548 阅读 · 0 评论