Time of Update: 2018-12-04
/*hash.h -- 雜湊表標頭檔*/enum KindOfEntry {LEGITIMATE, EMPTY, DELETED} ;#define PRIME (7)#define FAILED (-2)#define NUL ('/0')#define FALSE (0)#define TRUE (1)/*資料類型定義*/typedef char Name ;typedef struct cell{Name name ;int be_deleted
Time of Update: 2018-12-04
/*hash.c -- 雜湊表實現檔案*/#include <stdio.h>#include <stdlib.h>#include "hash.h"/*局部函式宣告*/static int Get_A_Prime (const int number) ;static int Is_A_Prime (const int number) ;static int Square (const int i) ;/*介面函數定義*/int Hash (const
Time of Update: 2018-12-04
用來類比使用線性探測法散列,平方探測法散列,雙散列發生衝突的次數. 可指定隨機序列大小,可反覆產生隨機序列.可指定表的大小,並可更改表的大小.方便對各種長度隨機數序列,各種大小的表進行類比測試.實現思想就是用表的指定大小建立一個數組,並將所有元素初始化為0.進行類比時,根據隨機序列中的所有數值依次計算出在表中的索引,如果表中該索引的元素為0,將該元素置為OCCUPANCY,否則衝突計數器++,並嘗試下一次類比插入.重複此過程,之後返回衝突計數器的值,釋放表的空間.
Time of Update: 2018-12-04
紅/黑樹狀結構,記得剛買那本書的時候我就發現有這個東西,覺得很神秘,終於接觸到了,並且,我已經寫出來了.很高興. 插入的常式是書上內建的,我給代碼實現了.細節部分,我並不是很清楚.刪除常式,是自己寫的,全下來寫了大概15小時,很辛苦.昨天晚上到家就開始寫,今天到家也是立刻就開始寫,寫完了. 我想說的是,關於刪除常式, 演算法部分的自己構建我很滿意,旋轉部分的細節實現以及細節,也是自己發現並總結的,而且是對的.很辛苦的過程啊,堅持過來了,哈哈.
Time of Update: 2018-12-04
這個東西,保證了樹的深度很低,而且旋轉的次數很少.較同類的AVL樹有了很大的提高.但是實現起來,並不簡單. 好吧,繼續我的習慣,代碼說明問題./*RedBlackTree.c -- 紅/黑樹狀結構實現檔案*/#include "RedBlackTree.h"/*全域變數引用*/extern Node * NullNode ;extern Node * Current, * Sibling, * Parent, * GrParent, * GrGrParent
Time of Update: 2018-12-04
/*stack.c -- 棧實現檔案*/#include <stdio.h>#include <stdlib.h>#include "stack.h"/*介面函數定義*/int Initialize_S (Stack * const pstack, const int capacity){if (capacity <= 0)return 0 ;*pstack = (struct stack *) malloc (sizeof (struct stack)) ;if
Time of Update: 2018-12-04
話說這個東西,寫了不下12小時.我堅持寫完了,並且寫對了.我很高興. 通過寫這個東西,加強了對尋找割點問題的認識,從而認識,並明白了尋找雙連通分支的過程. 我想要說明的是,深度優先搜尋,深度優先.從 (v, w) 開始的深度優先搜尋, 在回到調用 (v, w) 的那次調用之前, (w, v) 已經被處理過.這保證一條邊不會入棧兩次.同時, 也同時可以避免已被作為背向邊處理的 (v, w) 入棧.這都是通過 if (!Find_L (pli, w, index)) 來實現的.
Time of Update: 2018-12-04
/*2dTree.c -- 2-d樹實現檔案*/#include "2dTree.h"/*局部函式宣告*//*隊列部分*/static QueueNode * makeNode_Q (Node * const pn, const int index) ;/*2-d樹部分*/static Node * makeNode_T (const Item * const pi) ;static void release_T (Node * const pn)
Time of Update: 2018-12-04
這東西,寫了8小時.比較慢了.實現是一步一步地完成的.方法概述如下: 1.對原圖進行一次深度優先搜尋,以後序對各頂點標號. 2.將原圖反轉. 3.在新圖中,按照頂點標號從大到小的順序對所有頂點逐個檢查,並進行深度優先搜尋.每一次調用深度優先搜尋之後,下次調用時到調用結束階段,聲場的深度優先搜尋樹中的所有節點是強聯通的.
Time of Update: 2018-12-04
這個堆排序使用了新的下濾函數.對於已耗用時間的分析,暫時進行不了,回頭計算下吧.哪怕是很粗略的依賴於時鐘計時器./*7-40-11-27-23.10.c -- 第七章第四十題*/#include <stdio.h>#define SIZE 20int main (void) ;void print_array (const int * const array, const int size) ;void swap (int * const vala, int * const
Time of Update: 2018-12-04
話說,這個東西我寫了前前後後4天有餘, 光今天就寫了10小時.終於寫完了.感觸頗多啊.! 新的資料結構需要以前的資料結構結合使用,我沿著思路,進行設計,之後開始動筆,呵呵.開始寫,就是. 從Hash表,到鄰接表,再到二元堆積,磕磕絆絆,自己寫得比較著急,結果我還沒有那麼熟練,無法快速完成.能夠完成,我就已經很高興了.呵呵. 很多概念,是隨著寫代碼靈光起來的.寫著寫著,想起來書上原來有講過,呵呵.
Time of Update: 2018-12-04
//13-1.cpp#include "stdafx.h"#include "13-1.h"namespace binarySearchTree{//private:Node * BinarySearchTree :: m_MakeNode (const Item & item){Node * newNode = new Node ;if (newNode){newNode -> item = item ;newNode -> left = newNode ->
Time of Update: 2018-12-04
祝自己,情人節快樂. 今天是正月十五.在家研究了一天收費公路重建問題.可恥的是,居然目前還沒有搞正確. 倒是發現,原來的跳躍表有問題. 還好,這個問題正確地解決了. /*SkipList.c -- 跳躍表實現檔案*/#include "SkipList.h"/*局部函式宣告*/static int logTwo (const int value) ;static void endow (Item * const l_value, const Item * const r_value)
Time of Update: 2018-12-04
一個類比函數,目的在於找到一對節點的最近公用祖先.實現思想是首先將樹映射到一個數組中,跟節點範圍為ROOT,其餘節點範圍為父節點索引,這樣可以輕鬆找到父節點.於是,一個顯而易見的類比函數出現了./*8-10-12-02-22.29.c -- 第八章第十題*//*This is a model that can return a proximate communal parent betwen two node*//*First, map a tree to an
Time of Update: 2018-12-04
我真夠鬱悶,這麼久沒有更新部落格.罪過,罪過... 寫這個可擴散列,我寫出來的這個完全是個模型,限制較多,局限性也很強,大概32:1.呵呵.不過,儘管如此,拿來練手或者之前沒有寫過這個東西的朋友看到的話,還是很有協助的. 大概介紹下吧,不詳談了.本來想吹一頓的,無奈寫到現在,感覺很垃圾.於是不好意思大吹特吹了. 資料類型,無符號8位整數.對255以上的資料無效,想弄成負數要做的改動並不多.無奈不想再多耽擱了. 支援,初始化,插入,尋找,刪除,遍曆,清空.還算齊全的功能.
Time of Update: 2018-12-04
一晃一個月沒有寫東西,全是因為更多的精力放到了C++上.從5月4號開始的,馬上就一個月了.雖然還沒有學完,但也能寫出像二叉搜尋樹這樣的東西了. 新特性好多好多,功能好多,提供給使用者的介面更簡單.內部實現很複雜.建構函式,複製建構函式,重載賦值運算子,各種各種...通過寫這個東西小試身手下,再一個,到六月份了,一篇部落格也沒發表也不好看不是. 就不多說了,在網吧,旁邊有人...不想被看到寫了什麼,呵呵.貼咯~// 13-1-2011-06-01-21.17.cpp --
Time of Update: 2018-12-04
/*Uiversal_queue.h -- 隊列標頭檔*/#include "Head.h"/*Define data type*/typedef struct node{Item item ;struct node * next ;} Node ;typedef struct queue{Node * front ;Node * rear ;int current ;} * Queue ;/*Proclaim interface functions*/Bool Initialize_Q
Time of Update: 2018-12-04
/*PriorityQueue.h -- 最小堆標頭檔*/#include "Head.h"/*介面函式宣告*//*操作:建立並初始化一個優先隊列*//*操作前:ppq 指向一個優先隊列, size 是指定該優先隊列大小的變數*//*操作後:如果 size > 0 && 記憶體配置成功, 建立並初始化該優先隊列, 返回 TRUE ; 否則返回 FALSE*//*時間複雜度:O (1)*/BOOL Initialize_P (PriorityQueue * const
Time of Update: 2018-12-04
//nearTree.h -- 近親樹標頭檔#include <iostream>namespace tree{typedef int Item ;typedef struct node{Item item ;Item minOfAll, maxOfAll ;int minGap ;struct node * left, * right ;} Node ;const int INFINITY = ~(1 << 31) ;class
Time of Update: 2018-12-04
//nearTree.cpp -- 近親樹實現檔案#include "stdafx.h"#include "nearTree.h"namespace tree{//private:int NearTree :: m_Min (const int a, const int b, const int c, const int d) const{int min = a ;if (min > b)min = b ;if (min > c)min = c ;if (min >