原创 [python]漢諾塔問題求解

漢諾塔問題:將A塔上的5個圓盤移動到C塔上 可以用遞歸的思路來求解該問題,爲了使問題一般化,假設要移動n個圓盤。根據遞歸的思路,可以考慮先把上面n-1個圓盤移動到B塔上,然後將最底下的n號圓盤移動到C塔,再將B塔上n-1個圓

原创 快速排序

快速排序的重點在於如何分區,首先從數組中選取一個基準值,然後把小於基準值的元素放到左邊,大於基準值的元素放到右邊。如下圖所示 c實現 #include <stdio.h> int partition(int L[],int

原创 [c]隊列queue

#include <stdlib.h> #include <stdio.h> #include <string.h> struct Queue{ int head; int rear; int allocL

原创 [pyhton]二叉樹排序

biTree.py import Queue class biTreeNode(object): '''二叉樹節點類,只有left,right,data屬性''' def __init__(self,data=

原创 歐幾里德和stein兩種算法求最大公約數

1.歐幾里德 原理:`gcd(x,y) = gcd(y,x%y)` 2.stein 原理:`gcd(k*x,k*y) = k*gcd(x,y)` Python實現 #歐幾里德輾轉相除法求最大公約數 def euclidGcd

原创 [c]二叉樹

#include "Queue.c" struct Node{ int data; struct Node * father; struct Node * left; struct Node *

原创 網段劃分

A類 二進制表示,以0開頭:0xxx xxxx.yyyy yyyy.yyyy yyyy.yyyy yyyy 十進制表示:0.0.0.0-127.255.255.255 內網網段:10.0.0.0~10.255.255.255

原创 用二叉樹表示樹

在圖A-1中,樹的根節點是A,它有三個子節點:B、C、D;B有兩個子節點E、F;D有一個子節點G。將樹轉換爲二叉樹表示,left指向第一個子節點,right指向自己的兄弟節點。因此,可將圖A-1中的樹轉換爲圖A-2中的二叉樹。

原创 對分查找

對於一個排好序的數組,可以使用對分查找算法來查找元素。 #include <stdio.h> int binarySearch(int a[],int low,int high,int key){ /*a-->待查找數組,

原创 [C]判斷一個字符串是不是合格的表達式

#include <stdio.h> #include <ctype.h> #define FALSE 0 #define TRUE 1 char getSymbol(char *string,int length,int *po

原创 [Python]中綴表達式轉前綴表達式

#判斷運算符的優先級 def opOrder(op1,op2): order_dic = {'*':4,'$':5,'/':4,'+':3,'-':3} if op1 == '(' or op2 == '(':

原创 vim按鍵

移動光標的方法 h 或 向左箭頭鍵(←) 光標向左移動一個字符 j 或 向下箭頭鍵(↓) 光標向下移動一個字符 k 或 向上箭頭鍵(↑) 光標向上移動一個字符 l 或 向右箭頭鍵(→) 光標向右移動一個字符 如果你將右手放在鍵盤上的

原创 [python]將中綴表達式(infix)轉換爲後綴表達式(postfix)

將中綴表達式(infix)轉換爲後綴表達式(postfix) 算法描述 第一種情況,表達式不含括號。 假設存在一個函數prcd(op1,op2),其中op1和op2是兩個操作符(在中綴表達式中,op1在op2的左邊),如果op1

原创 [python]Huffman Encoding哈夫曼編碼

#Huffman Encoding #Tree-Node Type class Node: def __init__(self,freq): self.left = None self.r

原创 因特網五層協議棧

協議棧 舉例 應用層    應用層是網絡應用程序及其應用層協議存留的地方 HTTP、FTP、SMTP、DNS 傳輸層    運輸層提供了一個在應用程序的客戶機和服務器之間傳輸應用層報文的服務。運輸層分組(packe