原创 二叉樹的非遞歸遍歷

二叉樹是一種非常重要的數據結構,很多其它數據結構都是基於二叉樹的基礎演變而來的。對於二叉樹,有前序、中序以及後序三種遍歷方法。因爲樹的定義本身就是遞歸定義,因此採用遞歸的方法去實現樹的三種遍歷不僅容易理解而且代碼很簡潔。而對於樹的

原创 拓撲排序

轉載http://www.cnblogs.com/dolphin0520/archive/2011/04/16/2017737.html 概述 對一個有向無環圖(Directed Acyclic Graph簡稱DAG)G進行拓

原创 關鍵路徑

AOE網:在一個表示工程的帶權有向圖中,用頂點表示事件,用有向邊表示活動,邊上的權值表示活動的持續時間,稱這樣的有向圖叫做邊表示活動的網,簡稱AOE網。AOE網中沒有入邊的頂點稱爲始點(或源點),沒有出邊的頂點稱爲終點(或匯點)。

原创 赫夫曼編碼

定理 在變字長編碼中,如果碼字長度嚴格按照對應符號出現的概率大小逆序排列,則其平 均碼字長度爲最小。 現在通過一個實例來說明上述定理的實現過程。設將信源符號按出現的概率大小順序排列爲 : U: ( a1 a2 a3 a4 a5 a6

原创 程序題——遞歸判斷遞增

用遞歸算法判斷數組是否爲一個遞增數組 bool fun( int a[], int n ) { if( n == 1 || n == 0 ) return true; if( n ==2 ) return a[n-1] >=

原创 簡答題——heap和stack的區別

Heap和Stack的區別? 1.heap是堆,stack是棧。 2.stack的空間由操作系統自動分配和釋放,heap的空間是手動申請和釋放的,heap常用new關鍵字來分配。 3.stack空間有限,heap的空間是很大的自由區

原创 程序題——打印空心正方形

請以儘量高效的方法用”*”打印出一個空心正方形,num爲邊長 #include <stdio.h> int main() { int x,y,num; printf("please input the num:\n");

原创 程序題——字符串逆序

void reverse(char *str,int len) { int i;   char *str1 = str; if(len <= 0 || *str1 == NULL) { retu

原创 面向對象編程(一)

面向對象編程介紹 1.什麼是面向對象 面向將系統看成通過交互作用來萬恆特定功能的對象的集合。每個對象用自己的方法來管理數據。也就是說只有對象內部的代碼能夠操作對象內部的數據 2.面向對象的優點 通過,繼承、封裝、多態降

原创 哈夫曼樹

基本術語 哈夫曼樹(霍夫曼樹)又稱爲最優樹. 1、路徑和路徑長度 在一棵樹中,從一個結點往下可以達到的孩子或孫子結點之間的通路,稱爲路徑。通路中分支的數目稱爲路徑長度。若規定根結點的層數爲1,則從根結點到第L層結點的路徑長度爲L-1

原创 簡答題——系統調用與庫函數的區別

系統調用與庫函數的區別? (1)庫函數是語言或應用程序的一部分,而系統調用是內核提供給應用程序的接口,屬於系統的一部分 (2)庫函數在用戶地址空間執行,系統調用是在內核地址空間執行,庫函數運行時間屬於用戶時間,系統調用屬於系統時間,庫

原创 線索二叉樹

該文檔來自百度百科 概念 這種加上了線索的二叉鏈表稱爲線索鏈表,相應的二叉樹稱爲線索二叉樹(Threaded BinaryTree)。根據線索性質的不同,線索二叉樹可分爲前序線索二叉樹、中序線索二叉樹和後序線索二叉樹三種 注意: 線索

原创 簡答題——棧和隊列的區別

棧和隊列的區別? 1.隊列先進先出,棧先進後出。 2. 對插入和刪除操作的”限定”。 棧是限定只能在表的一端進行插入和刪除操作的線性表。隊列是限定只能在表的一端進行插入和在另一端進行刪除操作的線性表。 3.棧和隊列

原创 (綜合)進程間通信方式

1)管道 管道分爲有名管道和無名管道 無名管道是一種半雙工的通信方式,數據只能單向流動,而且只能在具有親緣關係的進程間使用.進程的親緣關係一般指的是父子關係。無明管道一般用於兩個不同進程之間的通信。當一個進程創建了一個管道,並調用fo

原创 程序題——字符串轉化成爲數字

C語言庫函數裏是否有將字符串轉化爲數字的函數,若有則用自己的方式實現它。 int atoi(const char * str) { if(str == NULL) //入口參數檢查!!!