<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Pwnpanda的博客]]></title><description><![CDATA[表白是最终胜利时的号角，而不是发起进攻的冲锋号]]></description><link>https://blog.csdn.net/Pwnpanda</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; Pwnpanda]]></copyright><item><title><![CDATA[源码阅读-MyTinyhttpd]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/109844212</link><guid>https://blog.csdn.net/Pwnpanda/article/details/109844212</guid><author>Pwnpanda</author><pubDate>Fri, 20 Nov 2020 11:46:22 +0800</pubDate><description><![CDATA[C语言练习项目，小型http服务器，tiny-httpd源码阅读
GitHub连接：https://github.com/gcspanda/tiny-httpd

]]></description><category></category></item><item><title><![CDATA[C语言实现一个Linux shell]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/109447021</link><guid>https://blog.csdn.net/Pwnpanda/article/details/109447021</guid><author>Pwnpanda</author><pubDate>Mon, 02 Nov 2020 13:00:57 +0800</pubDate><description><![CDATA[根据CSAPP shelllab改造的一个Linux shell
GitHub连接
https://github.com/gcspanda/MyShell

]]></description><category></category></item><item><title><![CDATA[C++指针&&函数传参问题]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/101797362</link><guid>https://blog.csdn.net/Pwnpanda/article/details/101797362</guid><author>Pwnpanda</author><pubDate>Mon, 30 Sep 2019 22:25:30 +0800</pubDate><description><![CDATA[指针啊！！！
如果有代码理解不了，那就亲自敲出来慢慢的测试。
------我说的
算是留下个记录，将来不用每次都敲出来
上次写的二级指针：https://blog.csdn.net/Pwnpanda/article/details/86775911
#include&lt;iostream&gt;
using namespace std; 

void TestA(int **A)
{
	//这里...]]></description><category></category></item><item><title><![CDATA[C++实现链表]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/101634364</link><guid>https://blog.csdn.net/Pwnpanda/article/details/101634364</guid><author>Pwnpanda</author><pubDate>Sat, 28 Sep 2019 19:55:31 +0800</pubDate><description><![CDATA[Dev C++
实现了创建、增、删、改、查、找最大、找最小、置空、数组转链表、链表合并
#include&lt;iostream&gt;
#include&lt;cstdio&gt;
#include&lt;cstdlib&gt;
using namespace std;

typedef struct LNode
{
	int data;
	LNode *next;
} LNode;

void...]]></description><category></category></item><item><title><![CDATA[C语言顺序表]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/101473421</link><guid>https://blog.csdn.net/Pwnpanda/article/details/101473421</guid><author>Pwnpanda</author><pubDate>Thu, 26 Sep 2019 20:38:13 +0800</pubDate><description><![CDATA[VSCode
#include &lt;iostream&gt;
#include &lt;cstdio&gt;
#include &lt;cstdlib&gt;
using namespace std;

#define maxSize 100
typedef struct SqList
{
    /* data */
    int data[maxSize];
    int length...]]></description><category></category></item><item><title><![CDATA[顺序表的简单实现]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/96044779</link><guid>https://blog.csdn.net/Pwnpanda/article/details/96044779</guid><author>Pwnpanda</author><pubDate>Tue, 16 Jul 2019 00:04:08 +0800</pubDate><description><![CDATA[#include&lt;stdio.h&gt;
#include&lt;stdlib.h&gt;

#define MAXSIZE 100
typedef struct List
{
    int data[MAXSIZE];
    int length;
} List;

//初始化
void InitList(List *L)
{
    L-&gt;length = 0;
    ret...]]></description><category></category></item><item><title><![CDATA[力扣（LeetCode）791. 自定义字符串排序]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/90796413</link><guid>https://blog.csdn.net/Pwnpanda/article/details/90796413</guid><author>Pwnpanda</author><pubDate>Tue, 04 Jun 2019 18:25:32 +0800</pubDate><description><![CDATA[思路：
①先对T进行遍历，记录下T中的元素及个数
②然后对S进行遍历，S即为题中定义的字母排序，那么凡是cMap[c] &gt;=1 的，皆为在S和T中同时出现的，那么就留下这些元素，这个顺序刚好就是S的顺序，记得要把cMap[c]的值减掉
③因为全是小写字母，所以可以对ASCII码97-122的字符进行遍历，如果这个字符的cMap[c]&gt;=1就说明是存在于T中，却不在S中的，那么这些就额...]]></description><category></category></item><item><title><![CDATA[力扣（LeetCode）61. 旋转链表]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/90756954</link><guid>https://blog.csdn.net/Pwnpanda/article/details/90756954</guid><author>Pwnpanda</author><pubDate>Mon, 03 Jun 2019 18:42:42 +0800</pubDate><description><![CDATA[思路：
①先计算出head链表的长度
②通过观察，发现题目的意思是从链表的末尾依次取出元素放置链表头部，那么这一定是个循环（参见示例2），所以在k&gt;len的时候可以将k - n*len，那么新的k如果和len相等，那就刚好凑成一个循环，直接返回head即可，否则进入循环，找到第len-k个元素（头节点为1）设为p
③temp = p-&gt;next，q = p-&gt;next，对q进行...]]></description><category></category></item><item><title><![CDATA[杂谈：六月二日晚刷题有感]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/90743687</link><guid>https://blog.csdn.net/Pwnpanda/article/details/90743687</guid><author>Pwnpanda</author><pubDate>Sun, 02 Jun 2019 21:22:01 +0800</pubDate><description><![CDATA[敲代码不应该仅仅是敲代码，应该积极发掘代码的艺术性，敲出来的代码应该犹如一件精美的工艺品一样，让人看着赏心悦目，陶醉其中。我们应该化身攻城狮改造世界，而不仅仅是程序猿，更不应该是码农！

...]]></description><category></category></item><item><title><![CDATA[力扣（LeetCode）1047. 删除字符串中的所有相邻重复项]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/90743621</link><guid>https://blog.csdn.net/Pwnpanda/article/details/90743621</guid><author>Pwnpanda</author><pubDate>Sun, 02 Jun 2019 21:17:12 +0800</pubDate><description><![CDATA[思路：
用栈来解决，在栈不为空的情况下，逐个取出字符然后和栈顶元素进行比较，如果相同则栈执行pop操作，然后取下一个字符串，如果不相等或者栈为空则执行push操作
#include&lt;iostream&gt;
#include&lt;string&gt;
#include&lt;stack&gt;
#include&lt;algorithm&gt;
using namespace std;
...]]></description><category></category></item><item><title><![CDATA[力扣（LeetCode）946. 验证栈序列]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/90730056</link><guid>https://blog.csdn.net/Pwnpanda/article/details/90730056</guid><author>Pwnpanda</author><pubDate>Sat, 01 Jun 2019 15:57:31 +0800</pubDate><description><![CDATA[思路：
按照顺序，每次从pushed里面取出一个元素，然后放入栈中
通过while循环判断在栈不为空的情况下，栈顶元素是否和popped的元素是否相等，相等则该元素出栈，且popped迭代器向指向下一个元素
示例1中：1、2、3、4入栈后，栈顶元素是4，popped第一个元素是4，那么popped的迭代器指向后一个5，栈顶元素执行pop操作后变为3，while循环终止，然后5入栈，此时再次进入...]]></description><category></category></item><item><title><![CDATA[力扣（LeetCode）890. 查找和替换模式]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/90723867</link><guid>https://blog.csdn.net/Pwnpanda/article/details/90723867</guid><author>Pwnpanda</author><pubDate>Fri, 31 May 2019 22:21:17 +0800</pubDate><description><![CDATA[思路：
代码里用了两个map，m和n，
每次取出一个字符串，然后逐位取出字符，在m里面找是否已经存在第i个字符的key值，如果不存在，就添加到map中，如果已经存在则判断它的value值是否和当前pattern[i]的值是否相等，一旦出现不相等，则立刻可以判断这个字符串不符合要求
但是如果仅仅使用上述条件是不行的（可以试着把关于n的全部注释掉，你会发现在示例中"abc"也会被判断成立），所以n就...]]></description><category></category></item><item><title><![CDATA[力扣（LeetCode）22. 括号生成]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/90703549</link><guid>https://blog.csdn.net/Pwnpanda/article/details/90703549</guid><author>Pwnpanda</author><pubDate>Thu, 30 May 2019 19:13:29 +0800</pubDate><description><![CDATA[思路：
DFS一波带走，输入n后，那么括号的总数量肯定是2n，所以进行全排列，然后从所有的组合中找出合适的放入vector容器中，这个方法应该算是比较简单的，所以时间复杂度和空间复杂度……唉
反思：
代码千万条，方法第一条，算法不学好，做题两行泪。
#include&lt;iostream&gt;
#include&lt;vector&gt;
using namespace std;

cla...]]></description><category></category></item><item><title><![CDATA[力扣（LeetCode）856. 括号的分数]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/90640330</link><guid>https://blog.csdn.net/Pwnpanda/article/details/90640330</guid><author>Pwnpanda</author><pubDate>Tue, 28 May 2019 15:29:12 +0800</pubDate><description><![CDATA[思路：
题目给定字符串，全部是左右括号组成，其实就是乘法分配律
例：如果是()，那就是2的0次方，如果是(())，那就是2的1次方，如果是((()))，那就是2的2次方，以此类推，如果是示例4那种混合型的，那就要用到乘法分配律了，( () (()) ) == (()) + ((()))，把字符串数组全部拆成次方形式，然后计算相加。
吐槽一下，做这个题，60％的时间用来理解题目到底啥意思，30％...]]></description><category></category></item><item><title><![CDATA[力扣（LeetCode）394. 字符串解码]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/90601514</link><guid>https://blog.csdn.net/Pwnpanda/article/details/90601514</guid><author>Pwnpanda</author><pubDate>Mon, 27 May 2019 13:06:02 +0800</pubDate><description><![CDATA[思路：
设置两个栈，一个栈用来存储数字，一个用来存储截取的字符串，然后相乘相加即可
坑点：
①因为传入的是字符串，所以要考虑数字位数大于一位怎么办，所以仅仅使用num = c - 48，是不行的；
②在第三个示例上，最后结尾字符串是ef，前面没有数字，而且没有“[" 、"]”，所以这个算是特殊情况，这个时候ef就保存在str里面，直接添加到result里面就好
（编程能力真的菜，思路很容易想，就...]]></description><category></category></item><item><title><![CDATA[力扣（LeetCode）144. 二叉树的前序遍历]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/90576542</link><guid>https://blog.csdn.net/Pwnpanda/article/details/90576542</guid><author>Pwnpanda</author><pubDate>Sun, 26 May 2019 15:26:32 +0800</pubDate><description><![CDATA[思路：
整体和94题类似，借助栈进行操作。
前序遍历：根左右
具体操作：
（假设初始根结点不为空，申请栈空间，这里用Stack数组代替，下标top初始为-1）
先把根结点放入Stack中，这样top!=-1，就可以进行while循环了
①在第一遍while循环中，先把栈中的元素（根节点）取出来记为p，并打印（或保存），然后判断其右孩子结点是否存在，存在则放入Stack中，随后再检测其左孩子结点是...]]></description><category></category></item><item><title><![CDATA[力扣（LeetCode）94. 二叉树的中序遍历]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/90548348</link><guid>https://blog.csdn.net/Pwnpanda/article/details/90548348</guid><author>Pwnpanda</author><pubDate>Sat, 25 May 2019 16:25:12 +0800</pubDate><description><![CDATA[思路：
这次使用非递归法来遍历
中序遍历：根左右，
①所以在找到最左边的结点之前，我们一直找的是根左根左根左……直到我们找到最左边的子节点（假设其父节点是p）
②则这个时候应该一层一层的回找相关的右结点，这个时候就把当前结点转到p-&gt;right，继续进行①操作，直到找到最右边的结点
具体操作：
（假设初始的时候根节点不为空，并申请一个栈Stack，这里用数组来代替，数组下标初始为-1）
①...]]></description><category></category></item><item><title><![CDATA[力扣（LeetCode）657. 机器人能否返回原点]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/90546553</link><guid>https://blog.csdn.net/Pwnpanda/article/details/90546553</guid><author>Pwnpanda</author><pubDate>Sat, 25 May 2019 14:30:11 +0800</pubDate><description><![CDATA[#include&lt;iostream&gt;
#include&lt;string&gt;
using namespace std;

class Solution
{
public:
    bool judgeCircle(string moves)
    {
        int X=0,Y=0;
        for(auto c:moves)
        {
     ...]]></description><category></category></item><item><title><![CDATA[力扣（LeetCode）804. 唯一摩尔斯密码词]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/90514066</link><guid>https://blog.csdn.net/Pwnpanda/article/details/90514066</guid><author>Pwnpanda</author><pubDate>Fri, 24 May 2019 12:00:07 +0800</pubDate><description><![CDATA[思路：
通过字符串找出对应的摩斯密码，然后标记一下，本来用map，但是发现有问题，就改用set了
#include&lt;iostream&gt;
#include&lt;cstring&gt;
#include&lt;vector&gt;
#include&lt;set&gt;
using namespace std;

class Solution
{
public:
    int un...]]></description><category></category></item><item><title><![CDATA[力扣（LeetCode）709. 转换成小写字母]]></title><link>https://blog.csdn.net/Pwnpanda/article/details/90513639</link><guid>https://blog.csdn.net/Pwnpanda/article/details/90513639</guid><author>Pwnpanda</author><pubDate>Fri, 24 May 2019 11:35:33 +0800</pubDate><description><![CDATA[思路：
可以直接调用tolower()函数，也可以对其ASCII码进行操作
#include&lt;iostream&gt;
#include&lt;cstring&gt;
#include&lt;cctype&gt;
using namespace std;
class Solution
{
public:
    string toLowerCase(string str)
    {
  ...]]></description><category></category></item></channel></rss>