跳躍表標頭檔C語言

來源:互聯網
上載者:User

  最近的代碼產量好低,讓我很有罪惡感!到家老是想睡覺,感覺很累.也確實,最近確實很累.也可能是因為,自己老是這麼認為,才會去累的吧...

  需要調整調整,各種調整.畢竟,想墮落是很容易的.

  這段代碼,寫了3天多.畢竟,動態規劃給我帶來的陰影還是很大的.最近研究演算法,搞得自信下去了.還好了,這段代碼,及時出現了.

  對於隨機函數,我的使用,很爛,希望以後有改進.

  帖!

/*SkipList.h -- 跳躍表標頭檔*/<br />#include <stdio.h><br />#include <stdlib.h><br />#include <assert.h></p><p>#define FALSE (0)<br />#define TRUE (1)<br />#define UNDECIDED (32768)</p><p>#define A (48271L)<br />#define M (2147486647L)<br />#define Q (M / A)<br />#define R (M % A)<br />#define MASK (0x01)</p><p>#define DEBUG (UNDECIDED)</p><p>/*資料類型定義*/</p><p>typedef int Item ;<br />typedef struct node<br />{<br />Item item ;<br />struct node * * next ;<br />int height ;<br />int times ;<br />} Node ;<br />typedef struct skiplist<br />{<br />Node * head ;<br />int current ;<br />int capacity ;<br />int maximum_of_height ;<br />} * SkipList ;</p><p>typedef int BOOL ;</p><p>/*全域變數*/</p><p>long int Seed ;</p><p>/*介面函式宣告*/</p><p>/*操作:初始化種子*/<br />/*操作前:種子值不確定*/<br />/*操作後:種子被初始化*/<br />/*時間複雜度: O (1)*/<br />void InitializSeed_S (const long int initial_value) ;</p><p>/*操作:產生 FALSE 值或者 TRUE 值並返回*/<br />/*操作前:種子已被初始化*/<br />/*操作:產生 FALSE 值或者 TRUE 值並返回*/<br />/*時間複雜度:O (1)*/<br />BOOL Random_S (void) ;</p><p>/*操作:建立並初始化一個跳躍表*/<br />/*操作前:psl 指向一個跳躍表, capacity 指示該表的最大大小*/<br />/*操作後:如果記憶體配置成功, 建立該跳躍表, 返回 TRUE ; 否則返回 FALSE*/<br />/*時間複雜度:O (1)*/<br />BOOL Initialize_S (SkipList * const psl, const int capacity) ;</p><p>/*操作:確定一個跳躍表是否為空白*/<br />/*操作前:psl 指向一個已初始化的跳躍表*/<br />/*操作後:如果該跳躍表為空白, 返回 TRUE ; 否則返回 FALSE*/<br />/*時間複雜度:O (1)*/<br />BOOL IsEmpty_S (const SkipList * const psl) ;</p><p>/*操作:確定一個跳躍表是否已滿*/<br />/*操作前:psl 指向一個已初始化的跳躍表*/<br />/*操作後:如果該跳躍表已滿, 返回 TRUE ; 否則返回 FALSE*/<br />/*時間複雜度:O (1)*/<br />BOOL IsFull_S (const SkipList * const psl) ;</p><p>/*操作:確定指定資料是否在跳躍表中*/<br />/*操作前:psl 指向一個已初始化的跳躍表, pi 指向指定資料*/<br />/*操作後:如果 pi 指向的資料在該表中, 返回 TRUE ; 否則返回 FALSE*/<br />/*時間複雜度:O (log N)*/<br />BOOL Find_S (const SkipList * const psl, const Item * const pi) ;</p><p>/*操作:尋找並返回指向跳躍表中最大資料的指標*/<br />/*操作前:psl 指向一個已初始化的跳躍表*/<br />/*操作後:如果該跳躍表不為空白, 返回指向最大資料的指標; 否則返回 NULL*/<br />/*時間複雜度:O (log N)*/<br />Item * FindMax_S (const SkipList * const psl)</p><p>/*操作:向跳躍表中插入指定資料*/<br />/*操作前:psl 指向一個已初始化的跳躍表, pi 指向指定資料*/<br />/*操作後:如果該跳躍表未滿 && 記憶體配置成功, 在該跳躍表找插入該資料, 返回 TRUE ; 否則返回 FALSE*/<br />/*時間複雜度: O (log N)*/<br />BOOL Insert_S (const SkipList * const psl, const Item * const pi) ;</p><p>/*操作:從跳躍表中刪除指定資料*/<br />/*操作前:psl 指向一個已初始化的跳躍表, pi 指向指定資料*/<br />/*操作後:如果表不為空白 && 該資料在該跳躍表中, 從該跳躍表中刪除該資料, 返回 TRUE ; 否則返回 FALSE*/<br />/*時間複雜度:O (log N)*/<br />BOOL Delete_S (const SkipList * const psl, const Item * const pi) ;</p><p>/*操作:從頭至尾將一個函數作用於跳躍表中所有元素1次*/<br />/*操作前:psl 指向一個已初始化的跳躍表, pfun 指向一個沒有傳回值, 接受一個 Node * 型別參數的函數*/<br />/*操作後:從頭至尾將一個函數作用於跳躍表中所有元素1次*/<br />/*時間複雜度: O (N)*/<br />void Traversal_S (const SkipList * const psl, void (* pfun) (const Node * const pn)) ;</p><p>/*操作:釋放一個跳躍表佔用的記憶體空間*/<br />/*操作前:psl 指向一個已初始化的跳躍表*/<br />/*操作後:該跳躍表所佔記憶體空間被釋放*/<br />/*時間複雜度:O (N)*/<br />void Release_S (const SkipList * const psl) ;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.