- 博客(13)
- 收藏
- 关注
原创 1111111
#!/usr/bin/env python3# -*- coding: utf-8 -*-import copyfrom lxml.etree import Element, SubElement, tostring, ElementTreeimport xml.etree.ElementTree as ETimport pickleimport osfrom os import listdir, getcwdfrom os.path import joinclasses = ["stop
2024-02-28 10:17:30
317
1
原创 数据结构——KMP算法详解(严蔚敏书版)
什么是KMP算法KMP算法是一种用于字符串匹配的算法,其名字的由来是三位发现者的首字母加起来,没有什么特殊含义。这种算法总的来说就是在一个文本的指定位置之后找到一个需要的子串并返回它的位置,如果不存在指定的子串,则返回0.在KMP算法被发现之前,我们通用的算法一般都是建立双循环,所以时间复杂度一般在O(m*n).m和n是分别为文本串和子串的长度。而如果使用KMP算法,则可以将时间复杂度降低到O(n+m);既然这种算法如此快,那么我们就来看看其原理以及如何实现吧。KMP算法的原理以及实现这里我们假设文本
2022-05-26 15:32:50
1919
1
原创 离散数学学习01——开局
离散数学在计算机科学领域中有着举足轻重的地位,但由于其数学的部分十分多且难(作者如此认为),所以作者决定单看一个关于离散数学的专栏,用来记录自己关于离散数学的认识和感悟,同时如果能帮助到读者(如果有的话),那自然是更好了。同时,我学习离散的方法主要是阅读机械工业出版社的离散数学及其应用第八版,同时佐以互联网的帮助。我会将离散数学分为以下几个部分(可能分类的标准并不成熟,以后可能会更改)。...
2022-05-12 15:44:41
162
2
原创 数据结构07-循环队列
汉诺塔:#include<iostream>using namespace std;int cnt = 0;void move(int n,char a,char b){ cout << ++cnt << " move disk " << n << " from " << a << " to " << b << endl;}void hanoi(int n,char a,char
2022-05-12 15:35:38
265
原创 数据结构06-链表队列
int op_cmp(char c1, char c2) //优先级c1>c2返回1,小于返回-1,等于返回0{ switch (c1) { case '+':switch (c2) { case '+':return 1; case '-':return 1; case '*':return -1; case '/':return -1; case'(':return -1; case ')':return -1; case '#':return 1; } case
2022-05-10 22:03:41
219
原创 数据结构06——栈的应用,括号匹配
栈本身上理解起来并不难,但栈之所以应用这么广泛,是因为其先进后出的思想在计算机各个领域都有所影响,这里我们来看它的一个应用——括号匹配。括号匹配的应用十分广泛,从Word的自动纠错,到我们更加熟悉的编译器检查语法,这些都需要用到括号匹配,那我们究竟如何判断一串字符串中的括号到底对不对呢,这里我们就需要用到栈的思想。照例,我们先上代码#include<iostream>#include<string>using namespace std;#define MaxSize 1
2022-05-10 19:50:26
231
原创 数据结构06-栈
栈和队列是两种我们应用非常广的数据机构,这两个都是线性表的一种,今天我们主要来谈谈栈。栈的主要代码:#include<iostream>using namespace std;#define MaxSize 10//初始化,压栈,入栈typedef struct Stack { int top; int data[MaxSize];}Stack;Stack* Stack_Init(){ Stack* temp = new Stack; if (!temp) {
2022-05-10 19:02:45
312
原创 数据结构05-多项式相加
先上代码再解释#include<iostream>using namespace std;//链表的应用-进行多项式的相加//创建一个多项式节点:typedef struct Node { int coeff; int exp; struct Node* next;}Poly, * Polyptr;//有以下几个函数//初始化,打印,测试,添加,相加。Polyptr Poly_Init(){ Polyptr temp = new Poly; if (!tem
2022-05-05 19:01:48
2455
3
原创 数据结构04-静态链表
先上代码#include<iostream>#define MAX_SIZE 5using namespace std;typedef struct Node { char data; int next;}*pNode;typedef struct List { pNode nodes; int* used;}*pList;pList List_Init(){ pList temp = new List; if (!temp) { cout <<
2022-05-03 19:07:20
336
1
原创 数据结构03-双向链表
双向链表的代码#include<iostream>using namespace std;/** * @brief 定义一个具有前驱和后继的结构体作为双链表的节点 */typedef struct DoubleLinkedList { int data; struct DoubleLinkedList* next; struct DoubleLinkedList* pre;}DualLinkedList;/** * @brief 定义一个操作双链表节点的操作
2022-05-02 08:57:44
539
1
原创 数据结构02——单链表
先上代码,再进行解释#include<iostream>using namespace std;/** * @brief 创建一个结点的结构体,包含指针域和数据域 */typedef struct LinkNode { int data; struct LinkNode* next;}LinkNode;/** * @brief 创建一个类,类中包含对链表的操作以及测试 */class LinkNode_Oper {public:/** * @bri
2022-04-28 12:54:55
182
原创 数据结构01-线性表
#include<iostream>using namespace std;#define LIST_MAX_LENGTH 10/** * @brief 建立一个线性表类,并提供操作线性表的接口函数 */class SequentialList{public: int size; int data[LIST_MAX_LENGTH]; /** * @brief 输出线性表的值 * @param 无 * @retval 无 */ void O.
2022-04-25 17:53:10
637
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人