<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[toast master袁的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_41869878</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_41869878]]></copyright><item><title><![CDATA[QT常用快捷键]]></title><link>https://blog.youkuaiyun.com/qq_41869878/article/details/125900833</link><guid>https://blog.youkuaiyun.com/qq_41869878/article/details/125900833</guid><author>qq_41869878</author><pubDate>Wed, 20 Jul 2022 21:18:19 +0800</pubDate><description><![CDATA[自己总结的一些很实用的快捷键，不全，但常用]]></description><category></category></item><item><title><![CDATA[K个有序链表合并]]></title><link>https://blog.youkuaiyun.com/qq_41869878/article/details/107744930</link><guid>https://blog.youkuaiyun.com/qq_41869878/article/details/107744930</guid><author>qq_41869878</author><pubDate>Sun, 02 Aug 2020 15:08:20 +0800</pubDate><description><![CDATA[这个算法题目是这样：合并 k 个排序链表，返回合并后的排序链表。请分析和描述算法的复杂度。
示例:
输入:
[
1-&gt;4-&gt;5,
1-&gt;3-&gt;4,
2-&gt;6
]
输出: 1-&gt;1-&gt;2-&gt;3-&gt;4-&gt;4-&gt;5-&gt;6
来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/merge-k-sorted-lists
对于这个算法题目，合并k个升序排序链表，首先可以把问题简化，先想清楚合并2个排]]></description><category></category></item><item><title><![CDATA[邻接表]]></title><link>https://blog.youkuaiyun.com/qq_41869878/article/details/107016787</link><guid>https://blog.youkuaiyun.com/qq_41869878/article/details/107016787</guid><author>qq_41869878</author><pubDate>Mon, 29 Jun 2020 11:48:19 +0800</pubDate><description><![CDATA[对于无向图（图2）的存储，最常用的存储方式就是邻接表。那么什么是邻接表呢？
如图2，它是通过数组和链表的结合。
图的顶点用一个一维数组存储，当然，顶点也可以用单链表来存储，不过数组可以较容易地读取顶点信息，更加方便。图中每个顶点Vi的所有邻接点构成一个线性表，由于邻接点的个数不确定，所以我们选择用单链表来存储。这样一个邻接表就生成了。
举个具体的例子：如图2中v0顶点，相连有三条边（v1,v0）(v2,v0),(v3,v0)。最后v0first指针依次指向就是1,2,3。

图1 邻接表

图2 无向图
具]]></description><category></category></item><item><title><![CDATA[栈实现的二进制转十进制和八进制]]></title><link>https://blog.youkuaiyun.com/qq_41869878/article/details/105346445</link><guid>https://blog.youkuaiyun.com/qq_41869878/article/details/105346445</guid><author>qq_41869878</author><pubDate>Thu, 09 Apr 2020 12:23:13 +0800</pubDate><description><![CDATA[栈实现的二进制转十进制，二进制转八进制
一个二进制的数转换成一个十进制的数很简单，只需要利用一个栈就可以了。当我们输入“11001”这样一串二进制数据，当入栈时，我们把高位先入栈，低位后入栈，然后再出栈。由于栈的特性，后进先出，先出栈的就是低位二进制数。然后按照公式乘以2 ^ 0, 2 ^ 1,2 ^ 2……等等即可。
重点是二进制转换到八进制，这里利用了两个栈，先将二进制数入栈，然后出栈，再压入...]]></description><category></category></item><item><title><![CDATA[维吉尼亚加密算法]]></title><link>https://blog.youkuaiyun.com/qq_41869878/article/details/105345824</link><guid>https://blog.youkuaiyun.com/qq_41869878/article/details/105345824</guid><author>qq_41869878</author><pubDate>Mon, 06 Apr 2020 16:38:06 +0800</pubDate><description><![CDATA[维吉尼亚加密算法
这个算法思想就是：当我们随机输入的要加密的一串明文，随机生成一个key,然后将对应的明文移动key位。最后得到加密后的密文。例如“HELLO”，随机生成KEY架设是‘2’，‘3’，‘4’，‘-1’，‘0’。那么得到的密文就是“JHPKO”。这里的KEY可正可负。本程序通过srand()和time()函数来生成伪随机数模拟KEY。代码如下：
#include &lt;stdio.h...]]></description><category></category></item><item><title><![CDATA[判断链表是否成环]]></title><link>https://blog.youkuaiyun.com/qq_41869878/article/details/105281437</link><guid>https://blog.youkuaiyun.com/qq_41869878/article/details/105281437</guid><author>qq_41869878</author><pubDate>Thu, 02 Apr 2020 22:42:58 +0800</pubDate><description><![CDATA[判断链表有无环
一般判断链表有无环，有两种方法：
1、指针计步法。
何为计步法呢？就是定义两个指针，p,q。当q每次移动一个位置，p随之从头开始移动到q的位置。当两个指针第一次相遇就分别记下p,q所走的步数。如果有环，q移动到末尾然后再到达一个中间位置，p从头开始移动到q的位置时，p，q第一次相遇时，他们分别走的步数肯定不一样。
2、快慢指针法。
定义两个指针,fast,low。fast每次走两步...]]></description><category></category></item><item><title><![CDATA[静态链表写通讯录]]></title><link>https://blog.youkuaiyun.com/qq_41869878/article/details/105178826</link><guid>https://blog.youkuaiyun.com/qq_41869878/article/details/105178826</guid><author>qq_41869878</author><pubDate>Sun, 29 Mar 2020 15:02:46 +0800</pubDate><description><![CDATA[静态链表写通讯录
C语言在没有使用指针之前，前辈们为了弥补数组的不足，就发明了静态链表。静态链表与动态链表最大的不同就是没有使用指针，没有使用malloc函数来动态申请内存，故被称之为静态链表。而它与数组最大的不同就在于，它多了一个游标cur作用类似与链表指针，用来指向下一个节点。
让数组的每个元素由data和cur两部分组成，其中cur相当于链表的next指针，这种用数组描述的链表叫做静态链表，...]]></description><category></category></item><item><title><![CDATA[双链表写通讯录]]></title><link>https://blog.youkuaiyun.com/qq_41869878/article/details/105103953</link><guid>https://blog.youkuaiyun.com/qq_41869878/article/details/105103953</guid><author>qq_41869878</author><pubDate>Wed, 25 Mar 2020 20:44:45 +0800</pubDate><description><![CDATA[双链表写通讯录
本人用双链表写的一个通讯录,代码如下:
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
struct Contacts *head = NULL;//定义头指针
typedef struct Contacts
{
	char name[100];
	char number[10...]]></description><category></category></item><item><title><![CDATA[单链表写通信录]]></title><link>https://blog.youkuaiyun.com/qq_41869878/article/details/105071887</link><guid>https://blog.youkuaiyun.com/qq_41869878/article/details/105071887</guid><author>qq_41869878</author><pubDate>Tue, 24 Mar 2020 14:47:42 +0800</pubDate><description><![CDATA[单链表写通讯录
单链表实现通讯录，增加，删除,更改一个联系人等功能。其中增加了一个内存池功能，用于对废弃内存的回收和利用。
#include&lt;stdio.h&gt;
#include&lt;stdlib.h&gt;
#include&lt;string.h&gt;
#define MAX 1024
void addPerson(struct Presonlist **node);//添加一个...]]></description><category></category></item><item><title><![CDATA[逆波兰表达式]]></title><link>https://blog.youkuaiyun.com/qq_41869878/article/details/105061089</link><guid>https://blog.youkuaiyun.com/qq_41869878/article/details/105061089</guid><author>qq_41869878</author><pubDate>Mon, 23 Mar 2020 23:33:57 +0800</pubDate><description><![CDATA[逆波兰表达式
#百度百科解释：
逆波兰表达式又叫做后缀表达式。在通常的表达式中，二元运算符总是置于与之相关的两个运算对象之间，这种表示法也称为中缀表示。波兰逻辑学家J.Lukasiewicz于1929年提出了另一种表示表达式的方法，按此方法，每一运算符都置于其运算对象之后，故称为后缀表示。
#逆波兰表达式的原理：
正常表达式与逆波兰表达式对比：
正常—&gt;逆波兰
1 + 2—&gt;1 2 +...]]></description><category></category></item><item><title><![CDATA[c语言的文件操作]]></title><link>https://blog.youkuaiyun.com/qq_41869878/article/details/104880388</link><guid>https://blog.youkuaiyun.com/qq_41869878/article/details/104880388</guid><author>qq_41869878</author><pubDate>Sun, 15 Mar 2020 18:03:45 +0800</pubDate><description><![CDATA[1、文本，二进制文件操作：打开，关闭，读写字符，读写字符串，读写数据块，文件位置指针定位。
C语言的文件操作。
C语言对于文本文件和二进制文件的操作：
函数列表如下：
|文本文件:  |  二进制文件|
|-打开，关闭：-|–|
|  |  |

fopen();
fclose();
读写字符:
fgetc();
fputc();
读写字符串
fgets();
fputs();
读写数据块
fsc...]]></description><category></category></item><item><title><![CDATA[单链表的基本操作]]></title><link>https://blog.youkuaiyun.com/qq_41869878/article/details/104801512</link><guid>https://blog.youkuaiyun.com/qq_41869878/article/details/104801512</guid><author>qq_41869878</author><pubDate>Wed, 11 Mar 2020 19:22:55 +0800</pubDate><description><![CDATA[建立单链表的头插法，尾插法，插入，删除操作
- a.单链表的创建
单链表其实就是系列结构体通过指针连接起来，可以分为两种,一种带头节点，一种不带头节点。具体定义如下。

struct LinkList{
	char name[100];
	char num[100];
	struct LinkList *next;
}

（一）使用头插法建立一个带头节点的单链表

struct Linklist ...]]></description><category></category></item><item><title><![CDATA[动态二维数组的建立]]></title><link>https://blog.youkuaiyun.com/qq_41869878/article/details/104748475</link><guid>https://blog.youkuaiyun.com/qq_41869878/article/details/104748475</guid><author>qq_41869878</author><pubDate>Mon, 09 Mar 2020 11:21:56 +0800</pubDate><description><![CDATA[一、使用malloc函数建立M*N的int类型动态二维数组的三种方法：


a、二级指针。
首先定义一个指向一块M*Sizeof(int *)大小内存空间的指针的指针（二级指针）。接下来再次,对于这M个指针进行内存分配（指定大小）。
p = (int **)malloc(m*sizeof(int *));
for (i=0;i&lt;m;i++)
{
*(p+i)=(int *)malloc(n ...]]></description><category></category></item></channel></rss>