![](https://img-blog.csdnimg.cn/direct/395d943ac8f14b359c90bb4752b4d54b.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C
文章平均质量分 73
C,学好C基本就能举一反三了
赫凯
人生如逆旅,我亦是行人。
展开
-
C/C++遍历文件夹
finddata_t的使用 那么到底如何查找文件呢?我们需要一个结构体和几个大家可能不太熟悉的函数。这些函数和结构体在的头文件中,结构体为struct _finddata_t ,函数为_findfirst、_findnext和_fineclose。具体如何使用,我会慢慢讲来~ 首先讲这个结构体吧~struct _finddata_t ,这个结构体是用来存储文转载 2014-10-08 14:49:14 · 721 阅读 · 0 评论 -
C编写循环链表,并删除其中的元素
先放大招#include #include //创建一个结构体typedef struct Node{ int data; // 数据 struct Node *pNext; // 指针}NODE, *PNODE;// 函数功能:创造一个循环链表// 函数参数:无// 函数返回:返回链表首地址PNODE creatList(){ int length,i,原创 2014-10-10 09:39:20 · 1088 阅读 · 0 评论 -
C 字符串指针的应用
这个简单,就只放大招了。原创 2014-10-10 09:43:28 · 600 阅读 · 1 评论 -
C 文件加密
注意写文件时应注意少和磁盘打交道原创 2014-10-10 09:49:16 · 779 阅读 · 0 评论 -
若干C的练习题 (不定期更新)
学习基本功判断素数Status isSu(int n){ int i; for (i = 2; i &a原创 2018-10-14 16:38:31 · 1169 阅读 · 2 评论 -
C 顺序列表若干操作
顺序表我理解解决了c中的数组不可变长度问题,在其他语言数组都是随时增加的,不会这样子//// main.c// C顺序表//// Created by 赫凯 on 2018/10/20.// Copyright © 2018年 赫凯. All rights reserved.//#include <stdio.h>typedef struct Seqlis...原创 2018-10-20 11:28:01 · 331 阅读 · 0 评论 -
C 无头结点单链表若干操作
顾名思义就是从一开就是有用的结点文章目录定义结构体创建定义结构体typedef struct Node { int element; struct Node *next;}LNode, * LinkNode;创建这里是手输入,输入为0的时候就退出来//传入一个头指针的地址void create(LinkNode *head){ //这里就用p1, p2循环插入即...原创 2018-10-22 15:35:58 · 514 阅读 · 0 评论 -
C 有头结点链表的若干操作
比无头节点的要简单很多文章目录创建输出访问第i个元素在i个位置前插入删除第i个元素头插尾插整体代码创建typedef struct Node { int data; struct Node * next;} LNode, * LinkNode;//创建,丝毫不用理会第一个节点特殊情况void creatLink(LinkNode * q){ int i; ...原创 2018-10-23 20:56:13 · 864 阅读 · 0 评论 -
C 两个链表中数据节点的数据域为一个字母 ,其中L1包含L2,在L1中找出与L2相等的字串,并将其逆置
//两个链表中数据节点的数据域为一个字母 https://www.ppkao.com/shiti/10246374Status reverseSubLink(LinkNode *L1, LinkNode L2){ //分两步走,先找出L1中L2的字串 //L1: a b c d e f g h i j k l m n o p q r s //L2: f g h i j k...原创 2018-10-25 14:50:39 · 771 阅读 · 5 评论 -
C 将一个单链表拆成3个循环链表,其中一个是纯数字,一个纯字母,一个其他字符
前面相关操作在这呢,这个函数依托于此//结构体typedef struct Node { ElementType data; struct Node * next;} LNode, * LinkNode;//将一个单链表拆成3个循环链表,其中一个是纯数字,一个纯字母,一个其他字符Status depositeLink(LinkNode L, LinkNode *L1, ...原创 2018-10-25 15:37:58 · 3319 阅读 · 2 评论 -
C 链表前n个是不是中心对称就像 arrfrra
前面相关操作在这呢,这个函数依托于此//结构体typedef struct Node { ElementType data; struct Node * next;} LNode, * LinkNode;//链表前n个是不是中心对称Status isSymmertricLink(LinkNode L, int n){ //本来要一个数组是最好的,无奈C语言不支持...原创 2018-10-25 15:57:31 · 196 阅读 · 0 评论 -
C 链表中从第s节点到第e节点的逆置
//结构体typedef struct Node { ElementType data; struct Node * next;} LNode, * LinkNode;//逆置从i到m个节点的串Status reversFromstoe(LinkNode *L, int s, int e){ if(!(*L)->next) return ER...原创 2018-10-25 17:19:00 · 134 阅读 · 0 评论 -
C 看看L1是不是L2的子链
//结构体typedef struct Node { ElementType data; struct Node * next;} LNode, * LinkNode;//看看L1是不是L2的一个子串Status isChildStr(LinkNode L1, LinkNode L2){ //L2出个前驱和当前,L1出个当前 LinkNode nodel1...原创 2018-10-25 18:55:53 · 786 阅读 · 0 评论 -
C 二叉树的一些操作
今天不开森,自行车在楼下被偷了文章目录二叉树的创建二叉树的先许遍历二叉树的中序遍历二叉树的后序遍历看看有多少个叶子节点总共有多少个节点二叉树的高度度为1的节点个数度为2的节点个数交换左右子树二叉树的创建//先序创建二叉树void CreatBinarTreeNode(BiThrTree *T){ char c; scanf(&quot;%c&quot;, &amp;amp;c); //输出空格...原创 2018-10-26 19:50:29 · 284 阅读 · 0 评论 -
C 二叉树的层序遍历
先序中序后序什么的都好说,但是层序遍历费点劲,但也还行之前二叉树基本操作在这里层序遍历就相当于,根节点先进来,再把子节点再都放进来,根节点出去,子节点再将它们的子节点再放进来,它们再出去。就是这样,其实就是个顺序队列,先进先出。代码如下//层序遍历void putout4(BiThrTree T){ //先定个大数组,就像是用数组形式定了二叉树的存储结构 BiThrTre...原创 2018-10-27 08:45:54 · 982 阅读 · 0 评论 -
C 二叉树查找值为x的节点,并打印其所有的父节点
思路就跟输出二叉树一样的,只不过这次是找节点文章目录查找节点输出此节点所有的父节点查找节点//找一个值为x的节点BiThrTree findElement(BiThrTree T, ElementType x){ if (!T) return NULL; if (T->data == x){ return T; } ...原创 2018-10-27 10:09:05 · 10088 阅读 · 1 评论 -
C 两个二叉树相似不相似
看下这两个树的结构是不是一样的//看两个树是不相似的bool isXiangsi(BiThrTree t1, BiThrTree t2){ //相判断这句,看其是否为空 if (!t1 && !t2) { return true; } //一个有一个没有直接毙了 else if ((t1 && !t...原创 2018-10-27 21:18:00 · 526 阅读 · 0 评论 -
C 图 邻接表的基本操作
大家可以看看,同胞写的,讲的特别清楚图 – 我的理解就是若干个节点,再加上他们之间的联系;这样就是两块内容,一个放节点,一个放他们的关系。最直观就是弄一个二维数组,行列为1的就是连着的,为0就是没有。但是太占空间了,于是就有了这样的,前面一列就是所有顶点排列,后面每个顶点跟着的就是和这个顶点连着的节点。根据这个理解,就可以把邻接表弄的七七八八了//// main.c// 图邻...原创 2018-10-30 18:00:19 · 4169 阅读 · 0 评论 -
C 栈的基本操作
直接上代码//// main.c// 栈的操作//// Created by 赫凯 on 2018/10/25.// Copyright © 2018 赫凯. All rights reserved.//#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#define STACK_INIT_SIZE 100#defi...原创 2018-10-31 09:19:30 · 575 阅读 · 0 评论 -
C 队列的基本操作
//// main.c// 队列//// Created by 赫凯 on 2018/10/30.// Copyright © 2018 赫凯. All rights reserved.//#include <stdio.h>#include <stdlib.h>typedef char Elemtype;typedef struct QNo...原创 2018-10-31 10:36:11 · 352 阅读 · 0 评论 -
C 查找二叉树的基本操作
//// main.c// 二叉排序树//// Created by 赫凯 on 2018/10/31.// Copyright © 2018 赫凯. All rights reserved.//#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;stdbool.h&gt;typedef int...原创 2018-10-31 17:28:33 · 957 阅读 · 0 评论 -
C 试基于图的深度优先搜索策略写一算法 判别以邻接表方式存储的有向图中是否存在由顶点 vi到顶点 vj的路径 i≠j 。
给大佬跪了,这个是要返回的,但是还要兼顾顶点上连接的其他节点,不能一个不行就不行,所以走的路径只返回走通的,走不通的略过,直到最后,能走到最后就说明根本没有通的路径,就这样。也可以把这个点上的所有连接点用深度遍历走一次,然后看看记录是否点亮的数组里是不是亮着的,亮着就说明是有路径,不亮就没有。严蔚敏 数据结构 7.22。...原创 2018-11-01 09:27:27 · 17893 阅读 · 3 评论 -
C 邻接表变邻接矩阵
我觉得跟输出一下子没啥区别,直接上代码//邻接矩阵存储typedef struct Matrix{ int arr[M][M]; //矩阵 int arc_num; //边的数目 int node_num; //节点的数目 bool is_directed;//是否是有向的}Matrix;//邻接表变邻接矩阵void convertAdj2Marix(G...原创 2018-11-02 19:11:37 · 357 阅读 · 0 评论 -
C 冒泡排序
简而言之就是往上冒泡泡冒泡排序,顾名思义,就是相邻的两项不断地比较,要是条件成熟就互换,就这样。//冒泡void BubbleSort(int a[], int n){ int i, j, temp, flag = 1; //n个数,一共跑n-1趟就好了,n-1个就拍好了,最后一个肯定是好的 for (i = 0; i < n-1; i++) { ...原创 2018-11-12 21:22:13 · 1362 阅读 · 0 评论 -
C 快速排序
快速排序就是对冒泡法进行一种改进,基本思想基于分治法,在L[1…n]选一个数为基准,比他小的往前,比他大的往后,这样得到两个L,在这个两个L中继续挑基准,小的往前,大的往后,循序往复,知道只有一个数字就OK了。代码如下//选择排序int Pratition(int a[], int low, int high){ int pivot = a[low]; while (low ...原创 2018-11-15 19:40:44 · 277 阅读 · 0 评论 -
C 直接插入排序
就相当于把整个数列吊起来,然后一个一个上,每次进入的时候,都保证插入之后是有序的void insertSort(int a[], int n){ int i, j, temp; //从第二个开始走,走到最后 for (i = 1; i <= n; i++) { //要是后一个比前一个小就触发调整机制 if (a[i] < ...原创 2018-11-19 19:02:16 · 255 阅读 · 0 评论 -
C 折半插入排序
在直接插入的时候,为了给被插入值找到合适的位置,就比较一次,直接决定其往挪走还是不走,比较➕移动,就是两次了。折半将比较和移动分离,先折半找出位置再统一移动。和直接插入一样的,仅仅优化了找位置的算法。void InsertSort(int a[], int n) { int i, j, low, high, mid, temp; for (i = 1; i < n; i...原创 2018-11-19 19:17:17 · 350 阅读 · 0 评论 -
C 希尔排序
希尔排序有点麻烦了,我理解就是为什么每次要和前面一个数比大小来确定触发调动条件,而且每次也就一步一步地走?我可不可以每次大步大步地走,一次走3个,相应的我一次也隔3个比一次。最后这个步长越来越小,直到为1个。下面这个图很厉害,网上的侵删。将数组划分成长度很小的多个小组,小组内排好序,再稍微加大小组的长度,再排一次,知道这个小组成为数组的本体void ShellSort(int a[], i...原创 2018-11-19 20:05:06 · 535 阅读 · 0 评论 -
C 简单选择排序
这个简单,在后面没有排好序的序列里,找一个里面最小的跟序列里最开始的那个元素交换void SelectSort(int a[], int n){ int i, min, j, temp; for (i = 0; i < n-1; i++) { min = i; //标记当前的下标 //从后面的序列里找一个最小的出来 for (...原创 2018-11-19 20:16:35 · 266 阅读 · 0 评论 -
C 堆排序
首先找一个树,将数组按从上到下,从左到右的顺序插在树里,本着根节点要大于两个叶子节点,对树进行调整,输出时,直接拿最上面的根节点,它肯定最大(或者最小),接着就按着原来的规则调整树,调整好了,最上面的肯定又是最大(或者最小),这样就得到有序的序列了。...原创 2018-11-24 19:14:21 · 616 阅读 · 0 评论 -
C 归并排序
有点点像希尔排序的整齐版 但是更像快速排序如果有两个有序的数组合并成一个的话会省下好多时间,那我就把一个数组分成两个,每个弄成有序的。那…我把分下的两个数组,再按这个这个办法,一直分下去,直到一个子数组里面只有一个元素,再合合合起来。分————治————合老师还给您的知识,我今天再拿回来吧...原创 2018-11-25 16:35:52 · 1187 阅读 · 0 评论 -
C 基数排序
基数排序有些许特别,不是上来比较,而是将每个数都分成个位、十位、百位、千位等等等等。先上来比较个位的,可以出来一个序列。再在这个序列列比较十位的,又可以出来一个序列。再百位等等等比较玩最大数字的最高位后,就OK了...原创 2018-11-25 16:43:23 · 393 阅读 · 0 评论 -
C 运算优先
百度挺全的C 语言里运算优先就贼烦人,有的时候明明分开比较好,却总是合在一起。第一梯队有a[] //数组下标(a+b)/c //圆括号a.b //成员选择(对象)a->b //成员选择(指针)第二梯队有-13 //负号运算符 (int)a //强制类型转换i++ //自增运算符i-- //自减运算符*q //取...原创 2018-11-26 17:00:57 · 139 阅读 · 0 评论 -
C 从文件读出字符串并显示
有个方法是feof(fp)这个可以判断是否到了最后的结束,结束的标志是EOF就是-1,可以这样写 char str[50]; char *p = str; //读文件的一般套路句式 if((file = fopen("B.txt","r")) == NULL) { printf("不能打开文件"); exit(0); } ...原创 2019-03-19 11:15:23 · 4442 阅读 · 0 评论