- 博客(13)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注

原创 单链表的基本操作
建立单链表的头插法,尾插法,插入,删除操作- a.单链表的创建单链表其实就是系列结构体通过指针连接起来,可以分为两种,一种带头节点,一种不带头节点。具体定义如下。struct LinkList{ char name[100]; char num[100]; struct LinkList *next;}(一)使用头插法建立一个带头节点的单链表struct Linklist ...
2020-03-11 19:22:55
272
1
原创 K个有序链表合并
这个算法题目是这样:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-k-sorted-lists对于这个算法题目,合并k个升序排序链表,首先可以把问题简化,先想清楚合并2个排
2020-08-02 15:08:20
533
原创 邻接表
对于无向图(图2)的存储,最常用的存储方式就是邻接表。那么什么是邻接表呢?如图2,它是通过数组和链表的结合。图的顶点用一个一维数组存储,当然,顶点也可以用单链表来存储,不过数组可以较容易地读取顶点信息,更加方便。图中每个顶点Vi的所有邻接点构成一个线性表,由于邻接点的个数不确定,所以我们选择用单链表来存储。这样一个邻接表就生成了。举个具体的例子:如图2中v0顶点,相连有三条边(v1,v0)(v2,v0),(v3,v0)。最后v0first指针依次指向就是1,2,3。图1 邻接表图2 无向图具
2020-06-29 11:48:19
1010
原创 栈实现的二进制转十进制和八进制
栈实现的二进制转十进制,二进制转八进制一个二进制的数转换成一个十进制的数很简单,只需要利用一个栈就可以了。当我们输入“11001”这样一串二进制数据,当入栈时,我们把高位先入栈,低位后入栈,然后再出栈。由于栈的特性,后进先出,先出栈的就是低位二进制数。然后按照公式乘以2 ^ 0, 2 ^ 1,2 ^ 2……等等即可。重点是二进制转换到八进制,这里利用了两个栈,先将二进制数入栈,然后出栈,再压入...
2020-04-09 12:23:13
498
原创 维吉尼亚加密算法
维吉尼亚加密算法这个算法思想就是:当我们随机输入的要加密的一串明文,随机生成一个key,然后将对应的明文移动key位。最后得到加密后的密文。例如“HELLO”,随机生成KEY架设是‘2’,‘3’,‘4’,‘-1’,‘0’。那么得到的密文就是“JHPKO”。这里的KEY可正可负。本程序通过srand()和time()函数来生成伪随机数模拟KEY。代码如下:#include <stdio.h...
2020-04-06 16:38:06
2027
原创 判断链表是否成环
判断链表有无环一般判断链表有无环,有两种方法:1、指针计步法。何为计步法呢?就是定义两个指针,p,q。当q每次移动一个位置,p随之从头开始移动到q的位置。当两个指针第一次相遇就分别记下p,q所走的步数。如果有环,q移动到末尾然后再到达一个中间位置,p从头开始移动到q的位置时,p,q第一次相遇时,他们分别走的步数肯定不一样。2、快慢指针法。定义两个指针,fast,low。fast每次走两步...
2020-04-02 22:42:58
404
原创 静态链表写通讯录
静态链表写通讯录C语言在没有使用指针之前,前辈们为了弥补数组的不足,就发明了静态链表。静态链表与动态链表最大的不同就是没有使用指针,没有使用malloc函数来动态申请内存,故被称之为静态链表。而它与数组最大的不同就在于,它多了一个游标cur作用类似与链表指针,用来指向下一个节点。让数组的每个元素由data和cur两部分组成,其中cur相当于链表的next指针,这种用数组描述的链表叫做静态链表,...
2020-03-29 15:02:46
201
原创 双链表写通讯录
双链表写通讯录本人用双链表写的一个通讯录,代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>struct Contacts *head = NULL;//定义头指针typedef struct Contacts{ char name[100]; char number[10...
2020-03-25 20:44:45
856
原创 单链表写通信录
单链表写通讯录单链表实现通讯录,增加,删除,更改一个联系人等功能。其中增加了一个内存池功能,用于对废弃内存的回收和利用。#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAX 1024void addPerson(struct Presonlist **node);//添加一个...
2020-03-24 14:47:42
260
原创 逆波兰表达式
逆波兰表达式#百度百科解释:逆波兰表达式又叫做后缀表达式。在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,这种表示法也称为中缀表示。波兰逻辑学家J.Lukasiewicz于1929年提出了另一种表示表达式的方法,按此方法,每一运算符都置于其运算对象之后,故称为后缀表示。#逆波兰表达式的原理:正常表达式与逆波兰表达式对比:正常—>逆波兰1 + 2—>1 2 +...
2020-03-23 23:33:57
253
原创 c语言的文件操作
1、文本,二进制文件操作:打开,关闭,读写字符,读写字符串,读写数据块,文件位置指针定位。C语言的文件操作。C语言对于文本文件和二进制文件的操作:函数列表如下:|文本文件: | 二进制文件||-打开,关闭:-|–|| | |fopen();fclose();读写字符:fgetc();fputc();读写字符串fgets();fputs();读写数据块fsc...
2020-03-15 18:03:45
321
原创 动态二维数组的建立
一、使用malloc函数建立M*N的int类型动态二维数组的三种方法:a、二级指针。首先定义一个指向一块M*Sizeof(int *)大小内存空间的指针的指针(二级指针)。接下来再次,对于这M个指针进行内存分配(指定大小)。p = (int **)malloc(m*sizeof(int *));for (i=0;i<m;i++){*(p+i)=(int *)malloc(n ...
2020-03-09 11:21:56
2768
毕业设计-智能光照控制系统
2019-08-01
智能光照控制系统的设计全部代码
2019-01-09
模拟IIC更改IO口以后,IIC设备读取数据失败
2019-11-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人