diff --git a/DataStructure/DS_0_Introduction/Doc_0_0_数据结构基本概念.md b/DataStructure/DS_0_Introduction/Doc_0_0_数据结构基本概念.md deleted file mode 100644 index 9dd8a56..0000000 --- a/DataStructure/DS_0_Introduction/Doc_0_0_数据结构基本概念.md +++ /dev/null @@ -1,123 +0,0 @@ -# 绪论第一节 - -![image-20200616203728181](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001224.jpg) - -## 基本概念 - -### 什么是数据? - -数据是**信息的载体**,是客观描述事物属性的数、字符及**所有能输入到计算机中并被计算机程序识别和处理的符号**的集合。数据是计算机程序加工的原料。 - -### 数据元素、数据项 - -**数据元素**是数据的基本单位,通常作为一个整体进行考虑和处理。 - -一个数据元素可由若干**数据项**组成,数据项是构成数据元素的不可分割的最小单位。 - -### 数据结构、数据对象 - -结构——各个元素之间的关系 - -**数据结构**是互相之间存在一个或多种**特定关系**的数据元素的集合。 - -**数据对象**是具有**相同性质**的数据元素的集合,是一个数据的子集。 - -## 三要素 - -![image-20200616204952204](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001225.jpg) - -### 逻辑结构 - -即,数据元素之间的逻辑关系是什么? - -![image-20200616205141919](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001226.jpg) - -#### 集合 - -![image-20200616205508144](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001227.jpg) - -各个数据元素同属一个集合,别无其它关系 - -#### 线性结构 - -![image-20200616205527638](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001228.jpg) - -数据元素之间是一对一的关系,除了第一个元素,所有元素都有唯一前驱,除了最后一个元素,所有元素都有唯一后继 - -#### 树形结构 - -![image-20200616205648476](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001229.jpg) - -数据元素之间是一对多的关系 - -#### 图结构 - -![image-20200616205732165](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001230.jpg) - -数据元素之间是多对多的关系 - -### 物理结构 - -即,物理结构,如何用计算机表示数据元素的逻辑关系? - -#### 顺序存储 - -![image-20200616205941135](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001231.jpg) - -**把逻辑上相邻的元素存储在物理地址上也相邻的存储单元中**,元素之间的关系由存储单元的领接关系来体现。 - -#### 链式存储 - -![image-20200616210302754](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001232.jpg) - -#### 索引存储 - -![image-20200616210349944](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001233.jpg) - -#### 散列存储 - -![image-20200616210434678](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001234.jpg) - -#### 总结 - -![image-20200616210508542](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001235.jpg) - -1. 若采用顺序存储,则各个数据元素在物理上必须是连续的;若采用非顺存储,则各个数据元素在物理上是可以离散的 -2. 数据的存储结构会影响存储空间的分配的方便程度 -3. 数据的存储机构会影响对数据运算的速度 - -### 数据的运算 - -施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,正对运算的功能;运算的实现是针对存储结构的,指的是运算实现的具体操作步骤。 - -## 数据类型、抽象数据类型 - -### 数据类型 - -数据类型是一个值的集合和定义在此集合的一组操作的总称。 - -1. 原子类型,其值不可再分的数据类型 -2. 结构类型,其值可以再分解为若干成分(分量)的数据类型 - -![image-20200616211417412](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001236.jpg) - -### 抽象数据类型 - -Abstract Data Type (ADT)是抽象数据组织及与之相关的操作。 - -ADT 是用数学化的语言定义数据的逻辑结构、定义运算。与其具体的实现无关(类似于定义类吗?可能) - -## 总结 - -![image-20200616212103345](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001237.jpg) - -![image-20200616212152228](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001238.jpg) - -在探讨一种数据结构时: - -1. 定义逻辑结构(数据原元素之间的关系) -2. 定义数据的运算(针对现实需求,应该对这种逻辑结构进行什么样的运算) -3. 确定某种存储结构,实现数据结构,并实现一些对数据结构的基本运算 - -![image-20200616212530957](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001239.jpg) - diff --git a/DataStructure/DS_0_Introduction/Doc_0_1_算法基本概念.md b/DataStructure/DS_0_Introduction/Doc_0_1_算法基本概念.md deleted file mode 100644 index ab56ecd..0000000 --- a/DataStructure/DS_0_Introduction/Doc_0_1_算法基本概念.md +++ /dev/null @@ -1,134 +0,0 @@ - - -# 绪论第二节——算法 - -## 基本概念 - -![image-20200616214853491](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001358.jpg) - -### 什么是算法? - -程序=数据结构+算法 - -![image-20200616215006166](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001359.jpg) - -###算法的特性 - -1. 有穷性:一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。 - - 注:算法必须是有穷的,二程序可以是无穷的。 - - ![image-20200616215340371](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001400.jpg) - -2. 确定性:算法每一条指令必须有确切的含义,对于相同的输入只能得出相同的输出 - -3. 可行性:算法描述的操作都可以通过已经实现的基本运算执行有限次来实现。 - -4. 输入:一个算法有0个或多个输入,这些输入取自某个特定对象的集合。 - -5. 输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。 - - 五个特性,缺一不可 - -####“好”算法的特质 - -1. 正确性:算法应能正确地解决求解问题。 -2. 可读性:算法应具有良好的可读性,帮助人们理解。 -3. 健壮性:输入非法数据时,算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果。 -4. 高效率与底存储量需求:执行速度快,时间复杂度低。不费内存,空间复杂度低。 - -###总结 - -![image-20200616220536590](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001401.jpg) - -## 算法效率的度量 - -![image-20200616220923527](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001402.jpg) - -### 如何评估算法时间开销? - -**让算法先运行,事后统计运行时间?** - -存在的问题? - -* 和机器性能有关,比如:超级计算机VS单片机 -* 和编程语言有关,越高级的语言执行效率越低,没错,就是越低 -* 和编译程序产生的机器指令质量有关 -* 有些算法是不能事后统计的,比如,导弹控制算法。 - -评价一个算法优劣时,需要排除与算法本身无关的外界因素,能否事先估计? - -### 算法时间复杂度 - -事前预估算法时间开销T(n)与问题规模n的关系(T 表示 time) - -如何计算T,例子: - -![image-20200616234743261](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001403.jpg) - -#### 问题1:是否可以忽略表达式某些部分? - -![image-20200616235203889](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001404.jpg) - -1. 加法规则:多项相加,只保留最高阶的项,且系数变为1 - - ![image-20200616235558501](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001405.jpg) - -2. 乘法规则:多项相乘,都保留 - - ![image-20200616235856976](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001406.jpg) - -##### 算法时间复杂度阶数顺序 - -![image-20200617000121744](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001407.jpg) - -![image-20200617000310666](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001408.jpg) - -#### 如果有好几千行代码,需要一行一行数? - -1. 顺序执行的代码只会影响常数项,可以忽略 -2. 只需要挑循环中的一个基本操作,分析它的执行次数和n的关系就好 -3. 如果有多层嵌套循环,只需要关注最深层的循环循环了几次 - -#### 小练习 - -![image-20200617001603926](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001409.jpg) - -![image-20200617001659516](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001410.jpg) - -![image-20200617001353856](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001411.jpg) - -#### 总结 - -![image-20200617001826231](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001412.jpg) - -算法的性能问题只有在n很大时才会暴露出来。 - -### 算法空间复杂度 - -#### 原地工作算法 - -![image-20200617002424730](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001413.jpg) - -分析空间复杂度时,只需关注与问题规模相关的变量就好(讲人话,就是,看程序中的变量就好) - -![image-20200617002625466](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001414.jpg) - -加法法则 - -![image-20200617002941853](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001415.jpg) - -#### 函数递归调用带来的内存开销 - -![image-20200617003249255](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001416.jpg) - -在这种情况下,空间复杂度等于递归调用的深度。 - -![image-20200617003702543](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001417.jpg) - -递归调用的过程中,每一次开辟的内存空间也可以不一致,如上例。 - -#### 总结 - -![image-20200617003857723](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001418.jpg) - diff --git a/DataStructure/DS_0_Introduction/Doc_0_2_错题总结.md b/DataStructure/DS_0_Introduction/Doc_0_2_错题总结.md deleted file mode 100644 index 61a7528..0000000 --- a/DataStructure/DS_0_Introduction/Doc_0_2_错题总结.md +++ /dev/null @@ -1,58 +0,0 @@ -# 错题总结 - -## 绪论 - -### 1.1数据结构 - -![image-20200620141611126](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001559.jpg) - -![image-20200620141729678](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001600.jpg) - - - -![image-20200620141623755](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001601.jpg) - -![image-20200620141744664](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001602.jpg) - - - -![image-20200620141644083](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001603.jpg) - -![image-20200620141822782](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001604.jpg) - - - -![image-20200620141659734](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001605.jpg) - -![image-20200620141857733](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001606.jpg) - - - -### 1.2算法 - -![image-20200620144456037](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001607.jpg) - -![image-20200620144443934](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001608.jpg) - - - -![image-20200620144648263](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001609.jpg) - -![image-20200620144742685](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001610.jpg) - - - -![image-20200620144922849](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001611.jpg) - -![image-20200620145032775](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001612.jpg) - - - -![image-20200620145234727](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001613.jpg) - -![image-20200620145244254](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001614.jpg) - -![image-20200620145307619](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001615.jpg) - - - diff --git a/DataStructure/DS_1_LinearList/Doc_1_0_线性表.md b/DataStructure/DS_1_LinearList/Doc_1_0_线性表.md deleted file mode 100644 index 5b9ab5d..0000000 --- a/DataStructure/DS_1_LinearList/Doc_1_0_线性表.md +++ /dev/null @@ -1,39 +0,0 @@ -# 线性表 - -##线性表的基本概念 - -![image-20200617165505571](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002132.jpg) - -### 线性表的定义 - -线性表是具有相同数据类型的n(n>=0)个元素的有限序列。 - -![image-20200617165917735](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002133.jpg) - -### 线性表的基本操作 - -![image-20200617171119623](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002134.jpg) - - - - -#### 什么时候要传入参数的引用“&”? - -一种是值类型,使用时会直接复制原值,修改参数不会影响原值 - -![image-20200617171738597](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002135.jpg) - -一种是引用类型,使用时操作的是原值,修改时直接修改原值!(C语言不支持这种引用类型!) - -![image-20200617171916923](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002136.jpg) - -#### 为什么要实现对数据结构的基本操作? - -1. 团队合作编程,你定义的数据结构要让别人能够很方便的使用(封装) -2. 将常用的操作/运算封装称函数,避免重复工作,降低出错风险。 - -### 总结 - -![image-20200617171547528](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002137.jpg) - -注意⚠️:位序是用1开始计算的!!! diff --git a/DataStructure/DS_1_LinearList/Doc_1_1_顺序表.md b/DataStructure/DS_1_LinearList/Doc_1_1_顺序表.md deleted file mode 100644 index d7d21c7..0000000 --- a/DataStructure/DS_1_LinearList/Doc_1_1_顺序表.md +++ /dev/null @@ -1,202 +0,0 @@ -# 顺序表 -##顺序表的基本概念 - -![image-20200617172240151](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002154.jpg) - -### 顺序表的定义 - -![image-20200617172428297](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002155.jpg) - -### 顺序表的初始化 - -#### 静态分配 - -![image-20200617172843813](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002156.jpg) - -具体实现: - -![image-20200617173539443](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002157.jpg) - -```c -//初始化(静态分配) -void InitList(SqList &L){ - for (int i = 0; i < MaxSize; i++) { - L.data[i]=0;//将所有元素的初始值默认设置为0 - //这一步其实可以省略,但是省略之后,有可能受到内存中"脏数据"的影响 - } - L.length=0; -} -``` - -##### 问题反思 - -1. 如果“数组”存满留怎么办? - -可以放弃治疗,顺序表长刚开始确定后就无法更改(存储空间是静态的) - -2. 如果一开始就声明一个很大的内存空间呢?会存在什么问题? - -浪费,会造成大量的浪费。 - -#### 动态分配 - -![image-20200617190108177](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002158.jpg) - -具体实现方式 - -![image-20200617190651552](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002159.jpg) - -```c -//初始化(动态方式) -bool InitList(SeqList &L){ - //用 malloc 函数申请一片连续的存储空间 - L.data=(int *)malloc(InitSize*sizeof(int)); - if (L.data==NULL) - //要细心呀,这里不小心写成了赋值语句,但是没有报错,找了半天错误! - return false; - //(int *) 是指针的强制类型转换 - L.length=0; - L.MaxSize=InitSize; - return true; -} -``` - -#### 总结 - -![image-20200617190838244](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002200.jpg) - -![image-20200617191008606](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002201.jpg) - -### 顺序表的基本操作 - -#### 插入 - -ListInsert(&L,i,e):插入操作。在表L中的第i个位置上插入指定元素e。 - -![image-20200617211304785](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002202.jpg) - -详细实现方式: - -![image-20200617212225782](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002203.jpg) - -优化之后: - -![image-20200617212144846](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002204.jpg) - -```c -bool ListInsert(SqList &L,int i,int e){ - //判断插入的位置是否合法, - if (i<1||i>L.length+1) - return false; - //判断表是否存满了 - if (L.length>=MaxSize) - return false; - - //后面的元素后移 - for (int j = L.length; j >=i ; j--) { - L.data[j]=L.data[j-1]; - } - L.data[i-1]=e; - L.length++; - return true; -} -``` - -#####插入操作的时间复杂度分析 - -![image-20200617213723625](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002205.jpg) - -#### 删除 - -![image-20200617220850929](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002206.jpg) - -```c -//删除 -bool ListDelete(SqList &L,int i,int &e){ - //判断i的位置是否合法 - if(i<0||i>L.length){ - return false; - } - //取出将要被删除的数 - e=L.data[i-1]; - //将其后的数据前移 - for (int j = i; j <=L.length ; j++) { - L.data[j-1]=L.data[j]; - } - //线性表长度减一 - L.length--; - return true; -} -``` - - - -##### 删除操作的时间复杂度分析 - -![image-20200617221030044](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002207.jpg) - -#### 总结反思 - -![image-20200617221250309](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002208.jpg) - -#### 查找 -#####按位查找 - -GetElem(L,i):按位查找操作,获取表L中第i个位置的元素的值 - -###### 静态分配状态下的实现方式 - -![image-20200617222107279](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002209.jpg) - -###### 动态分配状态下的实现方式 - -![image-20200617222212660](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002210.jpg) - -用指针加数组下标的方式取数据的时候,数组类型决定着取数据时取几个字节!! - -```c -//按位查找 -int GetElem(SeqList L,int i){ - //判断是否越界 - if (i<0||i>L.length) - return -1; - return L.data[i-1]; -} -``` - -###### 按位查找的时间复杂度分析 - -![image-20200617222451314](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002211.jpg) - -##### 按值查找 - -![image-20200618215105169](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002212.jpg) - -```c -//按值查找 -int LocateElem(SeqList L,int e){ - //循环出查找 - for (int i = 0; i