原创 鏈表題目

typedef struct LNode{ int data; struct LNode* next; }LNode,*LinkList; void Reverse(LinkList &L){ //斷鏈 LinkList p

原创 二叉樹非遞歸遍歷

void PreOrder(BiTree T){ InitStack(S); BiTree p=T; while(p||!IsEmpty(S)){ if(p){ visit(p); push(S,p); p=

原创 圖的深搜與廣搜

typedef char VType; #define INF 65535 #define MAXVEX 100 //鄰接矩陣 typedef struct{ VType vertices[MAXVEX]; int edges[M

原创 鏈表題目(一)

//刪除a,b之間的元素 void Del_a2b(LinkList &L,int a,int b){ LinkList pre=L,p=L->next,r; while(p!=NULL){ if(p->data>a&&p->d

原创 樹的題目(三)

//求最近公共祖先 BiTree CommonAncestor(BiTree T,BiTree p,BiTree q){ if(!T||T==p||T==q)return T;//先把p,q結點指針返回 BiTree left=C

原创 Typora的使用

                   

原创 鏈表插入和刪除操作時查找元素和鏈表查找元素的方法的區別

代碼源自教科書 先上代碼 typedef struct Node{ ElemType data; struct Node *next; }Node *LinkList; Status ListInsert(LinkList *L,

原创 弗洛伊德( Floyd )算法

 如果藉助頂點1,任意兩點之間的最短路徑更新爲: 藉助頂點1的方法是:     #include <iostream> using namespace std; int main() { int e[11][11],n,m,p,q

原创 講一些正則表達式的細節問題

一、爲什麼使用原生字符串 r''指的是原生字符串,目的是將Python中反斜槓的含義取消,避免發生衝突 例一:目標字符串爲'ab\bc\cd',想要匹配'ab\' 我們知道一個\需要用兩個\\來匹配,正則表達式應改寫爲ab\\,進而在Py

原创 Python進程間的通信方式

保持多個進程之間數據的一致性至關重要,此時需要用到進程同步技術 (一)多個進程需要同時訪問共享資源時,Lock可以避免訪問發生衝突 from multiprocessing import Process, Lock def func

原创 數據結構第六章習題

我會慢慢更新一些重要的習題 1.一棵深度爲H的滿k叉樹有如下性質:第H層上的結點都是葉子結點,其餘各層上每個結點都有k棵非空子樹。如果按層次順序從1開始對全部結點編號,問: (1)各層的結點數目是多少? (2)編號爲p的結點的父結點(若存

原创 通過先序遍歷結果建立二叉樹以及遍歷二叉樹的方法

在網上看到很多建立二叉鏈表的方法,我比較認可的一種方法是: #include <iostream> #include <cstdlib> using namespace std; typedef char ElemType; type

原创 已知二叉樹的先序遍歷和中序遍歷,求後序遍歷。以及已知二叉樹的中序遍歷和後序遍歷,求先序遍歷。

1.已知先序遍歷、中序遍歷、後序遍歷中的任意一種方式,都無法建立起二叉樹。 2.已知先序遍歷和中序遍歷,可以建立二叉樹。 3.已知中序遍歷和後序遍歷,可以建立二叉樹。 4.已知先序遍歷和後序遍歷,無法建立二叉樹。 下面來看洛谷p1030

原创 二叉樹和完全二叉樹的性質

1.第i層至多有個結點(i>=1) 2.深度爲k的二叉樹至多有個結點(k>=1) 3.葉子結點數爲,度爲2的結點數爲,則=+1。(證明:) 下面是完全二叉樹的性質 特點:葉子結點在層次最大的兩層出現;對於任意結點,右分支下的子孫的最大層次