<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[nnluop的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/nnluop</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; nnluop]]></copyright><item><title><![CDATA[c++之Vector]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/127573386</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/127573386</guid><author>nnluop</author><pubDate>Fri, 28 Oct 2022 18:28:22 +0800</pubDate><description><![CDATA[vector介绍]]></description><category></category></item><item><title><![CDATA[c++之map和set]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/127372629</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/127372629</guid><author>nnluop</author><pubDate>Mon, 17 Oct 2022 20:42:51 +0800</pubDate><description><![CDATA[map和set 详细]]></description><category></category></item><item><title><![CDATA[2021-10-31 剑指 Offer 31. 栈的压入、弹出序列]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/121066492</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/121066492</guid><author>nnluop</author><pubDate>Sun, 31 Oct 2021 17:07:53 +0800</pubDate><description><![CDATA[问题描述：
输入两个整数序列，第一个序列表示栈的压入顺序，请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如，序列 {1,2,3,4,5} 是某栈的压栈序列，序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列，但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。

解题思路：
拿到这个题我开始想的是能不能找规律，看有没有规律可寻找，但是没有找到。
然后我又想到了另一种方法，模拟出栈顺序，如果能模拟出来，那么就能够判断是否为正确的出栈顺序。

创建一个stack st;]]></description><category></category></item><item><title><![CDATA[c++之模版的语法和原理]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/120534798</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/120534798</guid><author>nnluop</author><pubDate>Wed, 29 Sep 2021 22:57:25 +0800</pubDate><description><![CDATA[C++模版的语法和原理
1.泛型编程
如何实现一个通用的交换函数呢？
第一种方法：使用函数重载实现
#include&lt;ostream&gt;
void swap(int&amp; a, int&amp; b)
{
	int temp = a;
	a = b;
	b = temp;
}
void swap(double&amp; a, double&amp; b)
{
	double temp = a;
	a = b;
	b = temp;
}

int main()
{
	int a = 1, b =]]></description><category></category></item><item><title><![CDATA[关于二叉树的建立和遍历易错问题]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/113857687</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/113857687</guid><author>nnluop</author><pubDate>Sun, 12 Sep 2021 14:18:46 +0800</pubDate><description><![CDATA[```c
#define _CRT_SECURE_NO_DEPRECATE
//二叉树的建立
#include&lt;stdio.h&gt;
#include&lt;stdlib.h&gt;
typedef struct btree {
	char data;
	struct btree* lchild;
	struct btree* rchild;
}btnode, *bitree;
void visit(char c, int level)
{
	printf("%c 在第 %d 层 \n", c, .]]></description><category></category></item><item><title><![CDATA[c++之内存管理]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/117537928</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/117537928</guid><author>nnluop</author><pubDate>Fri, 04 Jun 2021 00:29:46 +0800</pubDate><description><![CDATA[C/C++内存管理内存分布c语言动态内存管理方式c++中动态内存管理方式operator new 和operator delete函数new和delete的实现原理
内存分布
c语言动态内存管理方式
c++中动态内存管理方式
operator new 和operator delete函数
new和delete的实现原理
1.内存分布
内存中分为栈、堆、数据段（静态区）、代码段。

栈又叫堆栈，非静态局部变量/函数参数/返回值等等，栈是向下增长的。
内存映射段是高效的I/O映射方式，用于装载一个共享的动态内存]]></description><category></category></item><item><title><![CDATA[c++之类与对象]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/117457265</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/117457265</guid><author>nnluop</author><pubDate>Tue, 01 Jun 2021 23:53:07 +0800</pubDate><description><![CDATA[类与对象上篇中篇下篇
上篇
1.类的定义：
class className{
//类体
};
class 为定义类的关键字，className为类的名字。注意类结束之后的分号。
类中的元素称为类的成员，类中的数据成为类的属性或者成员变量，类中的函数称为类的方法。
2.类的两种定义方式
（1）声明和定义全部放在类中（这样编译器可能会将成员函数当成内联函数对待）；
（2）声明放在.h文件中，定义放在类的实现文件.cpp中。
3.类的访问限定符以及封装
（1）访问限定符：
public，private，prote]]></description><category></category></item><item><title><![CDATA[c++之函数重载和引用]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/117037729</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/117037729</guid><author>nnluop</author><pubDate>Wed, 19 May 2021 18:00:56 +0800</pubDate><description><![CDATA[一、函数重载
首先什么是函数的重载：
在同一作用域中声明几个功能类似的同名函数，这些同名函数的形参列表（参数个数、类型、顺序）必须不同。这样就能构成函数重载。

其次提出一个问题：
为什么c++支持函数重载而c语言不支持函数重载？那么c++又是如何支持函数重载的呢？
如果要回答这个问题，首先得明白四个过程：预处理-编译-汇编-链接
预处理：头文件展开，宏替换，去掉注释，条件编译
编译：检查语法，生成汇编代码
汇编：把汇编代码转换成二进制的进制码
链接：生成可执行文件
其中在第三步汇编的时候，会生成一个符号表]]></description><category></category></item><item><title><![CDATA[选择排序]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/110749065</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/110749065</guid><author>nnluop</author><pubDate>Sun, 06 Dec 2020 18:00:04 +0800</pubDate><description><![CDATA[#实现选择排序
"""
在未排序的中找到最小或者最大，交换位置；在这个排序算法中可以看成已排序和未排序两个排序。
"""
def choiceSort(list):
    for i in range(len(list)-1):
        # 索引从0到len-2,每一轮在该位置都会放每轮找到的最小值
        minIndex = i #每轮位置从i开始，i之前的大小都已经确定好了
        for j in range(i+1,len(list)): #从j从i+1，到len位置，找]]></description><category></category></item><item><title><![CDATA[python-闭包学习（一）]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/110449510</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/110449510</guid><author>nnluop</author><pubDate>Tue, 01 Dec 2020 19:50:18 +0800</pubDate><description><![CDATA[```python
#闭包 针对函数 在函数中提出的概念 在函数中嵌套函数
#闭包具备的条件，第一个 函数嵌套函数 第二个外部函数的返回值是内部函数名--注意这里不能加括号，加括号代表的调用 第三个内部函数使用外部函数的变量
"""
格式
def 外部函数（）：
    def 内部函数（）：
    .......
    ....
    return 内部函数名字
"""

def func():
    a=100
    def inner():
        b=99
        pri.]]></description><category></category></item><item><title><![CDATA[python-实现冒泡排序和快速排序]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/110270872</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/110270872</guid><author>nnluop</author><pubDate>Sat, 28 Nov 2020 14:20:00 +0800</pubDate><description><![CDATA[11.28-学习笔记
设置flag在一定程度上优化了冒泡排序
#实现冒泡排序
#冒泡排序就是相邻两个数比较，大的后移，然后一轮过去后，大的会在最后一个位置
def bubble_sort(list):
    for i in range(0,len(list)):#轮数
        flag=False
        for j in range(0,len(list)-i-1):#每轮的次数
            if(list[j]&gt;list[j+1]):#在这里可以进行优化，实际上在后]]></description><category></category></item><item><title><![CDATA[C-数据结构之顺序栈、链式栈]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/110246722</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/110246722</guid><author>nnluop</author><pubDate>Fri, 27 Nov 2020 21:09:16 +0800</pubDate><description><![CDATA[11.27-学习笔记（今天终于把栈写了）
顺序栈的实现如下：
//栈的实现-只允许在一端进行插入或者删除操作的线性表（后进先出） 
//栈顶、栈底、空栈
#include&lt;stdio.h&gt;
#define MaxSize 10

typedef struct stack{
	int data[MaxSize];
	int top;
}Sqstack; 

//创建一个栈 
void creat(Sqstack *s)//参数：栈的首地址 
{
	int e;
	while(1)
	{
		pri]]></description><category></category></item><item><title><![CDATA[C-数据结构之队列（顺序和链式）]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/110138331</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/110138331</guid><author>nnluop</author><pubDate>Wed, 25 Nov 2020 17:53:00 +0800</pubDate><description><![CDATA[11.24 学习笔记-今日打卡队列（链式和顺序表）
代码没有注重格式，只是能够实现基本的功能。
代码中很多多余的变量和书写，都是在调试过程中产生的，（本博客只是记录代码）
//队列-链式存储 
#include&lt;stdio.h&gt;
#include&lt;stdlib.h&gt;
//建立一个结点的结构体，里面存有data和next 
typedef struct Qnode{
	int data;
	struct Qnode* next;
}node;
//链式队列的首尾指针 
typedef ]]></description><category></category></item><item><title><![CDATA[C-数据结构之单链表逆置]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/110137723</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/110137723</guid><author>nnluop</author><pubDate>Wed, 25 Nov 2020 17:45:18 +0800</pubDate><description><![CDATA[11.25-学习笔记
单链表的逆置-大概思想就是新建立一个头结点，然后让之前的结点使用头插法插入到新建立的链表中。（这个也是使用快慢指针判断回文串中前半部分逆置的思想（我感觉是这样的））
//实现单链表的逆置
//逆置单链表就是新创建一个链表，然后让原始列表的每一个结点使用头插法插入到新链表中。 
#include&lt;stdio.h&gt;
#include&lt;stdlib.h&gt;
typedef struct node{
	int data;
	struct node * next;
}Lno]]></description><category></category></item><item><title><![CDATA[C-数据结构之单链表实现回文串的判断]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/110000670</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/110000670</guid><author>nnluop</author><pubDate>Mon, 23 Nov 2020 16:38:37 +0800</pubDate><description><![CDATA[学习笔记–11.23
刚接触数据结构，实现方法简单，文中注释均为我在写代码中遇到的问题和调试过程。且在回文串判断的时候开始选择用快慢指针进行（但是由于此处思路不是很清晰，每次都会少计算一个位置导致换了一种方法）-方法简单但是时间复杂度就比较高；
后续我会再学习一下快慢指针的方法。
//数据结构之回文串的判断
//存储方式，单链表
#include&lt;stdio.h&gt;
#include&lt;stdlib.h&gt;
typedef struct node{
	char c;
	struct nod]]></description><category></category></item><item><title><![CDATA[C-数据结构之顺序表的增删改查]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/109907124</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/109907124</guid><author>nnluop</author><pubDate>Sat, 21 Nov 2020 20:28:32 +0800</pubDate><description><![CDATA[11.21-学习笔记
#include&lt;stdio.h&gt;
#include&lt;stdlib.h&gt;
#define MaxSIZE 100
#define ElemType int
//定义一个顺序表
typedef struct{
	ElemType data[MaxSIZE];//顺序表的元素
	int length;//顺序表的长度
}seqlist,*list;

//顺序表的创建 
list creatlist(seqlist *L)
{
//	printf("1.L=%d\n]]></description><category></category></item><item><title><![CDATA[C-数据结构（直接插入排序、折半排序、希尔排序）]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/109901148</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/109901148</guid><author>nnluop</author><pubDate>Sat, 21 Nov 2020 16:28:54 +0800</pubDate><description><![CDATA[11.21-学习笔记之直接插入排序，折半排序，希尔排序
小白水平，只记录自己的学习过程
//本文实现直接插入排序、折半插入排序、希尔排序--顺序表实现
//直接插入排序的思维就是一个未排队序列和一个已排队序列，然后设置哨兵。  
#include&lt;stdio.h&gt;
#include&lt;stdlib.h&gt;
#define Maxsize 100
typedef struct{
int data[Maxsize];
int length; 
}seqlist,*list;
list cre]]></description><category></category></item><item><title><![CDATA[C-单链表之相邻结点交换]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/109894385</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/109894385</guid><author>nnluop</author><pubDate>Sat, 21 Nov 2020 12:17:28 +0800</pubDate><description><![CDATA[11.21-本文实现的相邻结点交换-
本文注释均为我在写代码途中遇到的问题
//本文实现单链表的相邻结点交换
#include&lt;stdio.h&gt;
#include&lt;stdlib.h&gt; 
typedef struct node{
	int data;
	struct node* next;
}Lnode,*Linklist;
//使用尾插法建立单链表
Linklist creat()
{
	Linklist L,s;
	Lnode* p;
	int e;
	L=(Linklist)ma]]></description><category></category></item><item><title><![CDATA[C语言--单链表的实现（简单，有注释）]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/109892226</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/109892226</guid><author>nnluop</author><pubDate>Sat, 21 Nov 2020 10:59:53 +0800</pubDate><description><![CDATA[学习笔记11.21（小白水平）
每一个注释均为调试语句
实现了链表相关的操作
如有问题，请指出，谢谢！
//本文实现单链表的相关功能 
#include&lt;stdio.h&gt;
#include&lt;stdlib.h&gt;
typedef struct node{
	int data;
	struct node* next;
}Lnode,*Linklist;

int init(){
	//初始化单链表 
	
	Linklist L;
	L-&gt;next=NULL;
	return 0;
}]]></description><category></category></item><item><title><![CDATA[C-利用指针实现strlen]]></title><link>https://blog.youkuaiyun.com/nnluop/article/details/109782352</link><guid>https://blog.youkuaiyun.com/nnluop/article/details/109782352</guid><author>nnluop</author><pubDate>Wed, 18 Nov 2020 19:05:12 +0800</pubDate><description><![CDATA[每天记录自己的学习笔记（11.18）
#include&lt;stdio.h&gt;
//利用指针实现strlen的功能 
int my_strlen(char*  arr){ 
	char* start=arr;//将arr的地址给start 
	char* end=arr;//arr地址给end 
	while(*end!='\0'){//如果*end不等于'\0' 
		end++;//指针++ 
	}
	return end-start;//指针-指针就是等于长度 
}
int main(){
	c]]></description><category></category></item></channel></rss>