/*PairingHeap.c -- 配對堆實現檔案*/#include "PairingHeap.h"/*全域變數聲明*/static Node * NullNode = NULL ;/*局部函式宣告*/static Node * compareAndLink_P (Node * const first, Node * const second) ;static Node * makeNode_P (const Item item) ;static Node *
/*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
用來類比使用線性探測法散列,平方探測法散列,雙散列發生衝突的次數. 可指定隨機序列大小,可反覆產生隨機序列.可指定表的大小,並可更改表的大小.方便對各種長度隨機數序列,各種大小的表進行類比測試.實現思想就是用表的指定大小建立一個數組,並將所有元素初始化為0.進行類比時,根據隨機序列中的所有數值依次計算出在表中的索引,如果表中該索引的元素為0,將該元素置為OCCUPANCY,否則衝突計數器++,並嘗試下一次類比插入.重複此過程,之後返回衝突計數器的值,釋放表的空間.
一晃又是好幾天.總算今天是有代碼出現了. 自頂向下伸展樹,比去年寫的那個伸展樹輕鬆多了. 人家總結出來的東西,我看懂了,完全讓我自己寫的話,很難啊. 這段代碼,有些技巧.說的就是"NullNode"到底是怎麼回事,具體的自己看代碼吧.而且,發現自己的C語言功底還不夠,自己補了下,而且接下來會有意識地學一學了. 不多說了.還有,下周去報名,程式員考試.我幹勁. /*SplayTree.h -- 自頂向下伸展樹標頭檔*//*酒後寫的標頭檔哦.*/#include <stdio.h&
紅/黑樹狀結構,記得剛買那本書的時候我就發現有這個東西,覺得很神秘,終於接觸到了,並且,我已經寫出來了.很高興. 插入的常式是書上內建的,我給代碼實現了.細節部分,我並不是很清楚.刪除常式,是自己寫的,全下來寫了大概15小時,很辛苦.昨天晚上到家就開始寫,今天到家也是立刻就開始寫,寫完了. 我想說的是,關於刪除常式, 演算法部分的自己構建我很滿意,旋轉部分的細節實現以及細節,也是自己發現並總結的,而且是對的.很辛苦的過程啊,堅持過來了,哈哈.
這個東西,保證了樹的深度很低,而且旋轉的次數很少.較同類的AVL樹有了很大的提高.但是實現起來,並不簡單. 好吧,繼續我的習慣,代碼說明問題./*RedBlackTree.c -- 紅/黑樹狀結構實現檔案*/#include "RedBlackTree.h"/*全域變數引用*/extern Node * NullNode ;extern Node * Current, * Sibling, * Parent, * GrParent, * GrGrParent
數組的棧,好久沒有寫了.這次的寫,加深了理解,更加深刻地體會到常式中的技巧與實用./*stack.h -- 棧標頭檔*/#define EMPTY_TOP (-1)/*資料類型定義*/typedef int Stack_Item ;typedef struct stack{Stack_Item * array ;int capacity ;int top ;} * Stack ;/*介面函式宣告*//*操作:建立並初始化一個棧*//*操作前:pstack 指向一個棧, capacity
....最近的作品,實在是少得可憐. 不過還好,總比沒有得要好. 這個東西,是分治演算法的例子,是按照思路實現起來的,總體說來,還算不錯.希望接下來的,能實現得更自然./*10-16-11-01-22-23.17.c -- 第十章第十六題*//*有問題存在,偶爾出現段錯誤.偶爾出現計算錯誤.這道習題耽誤太久了,先不去研究了. -- 11-01-27-21.49*/#include <stdio.h>#include <stdlib.h>#include
/*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
反轉一個鄰接表,沒有考慮權值.是為另一個常式服務的一個函數.貼出來吧.int Reverse_A (Adjacenty_List * const padj, const Hash_Table * const pht){Name name ;Adjoin_To_Vertex * scan, * new_vertex, * temp_1, * * temp_2 ;int w, i, capacity = (*padj) -> capacity ;for (i = 0; i <
/*Stack_ADT.c -- 棧模型實現檔案*/#include <stdio.h>#include <stdlib.h>#include "Stack_ADT.h"/*局部函式宣告*/static Stack_Node * Make_Node (const Name * const panme) ;/*介面函數定義*/int InitializeStack (Stack * const pstack){*pstack = (Stack_Node *) malloc
合并兩個文字檔,這個思想很不錯,我很喜歡./*7-37-11-27-22.11.c -- 第七章第三十七題*/#include <stdio.h>int main (void) ;int main (void){FILE * fpa, * fpb, * fpc ;char cha, chb ;fpa = fopen ("a.txt", "r") ;fpb = fopen ("b.txt", "r") ;fpc = fopen ("c.txt", "w") ;if (NULL ==
//13-1.h#include <iostream>namespace binarySearchTree{typedef int Item ;typedef struct node{Item item ;struct node * left, * right ;} Node ;class BinarySearchTree{private:Node * m_root ;int m_current ;Node * m_MakeNode (const Item & item) ;
這個堆排序使用了新的下濾函數.對於已耗用時間的分析,暫時進行不了,回頭計算下吧.哪怕是很粗略的依賴於時鐘計時器./*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
話說,這個東西我寫了前前後後4天有餘, 光今天就寫了10小時.終於寫完了.感觸頗多啊.! 新的資料結構需要以前的資料結構結合使用,我沿著思路,進行設計,之後開始動筆,呵呵.開始寫,就是. 從Hash表,到鄰接表,再到二元堆積,磕磕絆絆,自己寫得比較著急,結果我還沒有那麼熟練,無法快速完成.能夠完成,我就已經很高興了.呵呵. 很多概念,是隨著寫代碼靈光起來的.寫著寫著,想起來書上原來有講過,呵呵.
//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 ->
祝自己,情人節快樂. 今天是正月十五.在家研究了一天收費公路重建問題.可恥的是,居然目前還沒有搞正確. 倒是發現,原來的跳躍表有問題. 還好,這個問題正確地解決了. /*SkipList.c -- 跳躍表實現檔案*/#include "SkipList.h"/*局部函式宣告*/static int logTwo (const int value) ;static void endow (Item * const l_value, const Item * const r_value)
我真夠鬱悶,這麼久沒有更新部落格.罪過,罪過... 寫這個可擴散列,我寫出來的這個完全是個模型,限制較多,局限性也很強,大概32:1.呵呵.不過,儘管如此,拿來練手或者之前沒有寫過這個東西的朋友看到的話,還是很有協助的. 大概介紹下吧,不詳談了.本來想吹一頓的,無奈寫到現在,感覺很垃圾.於是不好意思大吹特吹了. 資料類型,無符號8位整數.對255以上的資料無效,想弄成負數要做的改動並不多.無奈不想再多耽擱了. 支援,初始化,插入,尋找,刪除,遍曆,清空.還算齊全的功能.
/*PriorityQueue.h -- 最小堆標頭檔*/#include "Head.h"/*介面函式宣告*//*操作:建立並初始化一個優先隊列*//*操作前:ppq 指向一個優先隊列, size 是指定該優先隊列大小的變數*//*操作後:如果 size > 0 && 記憶體配置成功, 建立並初始化該優先隊列, 返回 TRUE ; 否則返回 FALSE*//*時間複雜度:O (1)*/BOOL Initialize_P (PriorityQueue * const
//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