進行到現在,我們已經建立了class element類並且知道了一些自己定的預設的規則。
現在我們設計另外乙個稍微比class element類複雜一點的類線性表類class list。同樣的,先把線性表所應該有的方法抽象出來:list.h
//list.h
class list;
ps:其實(鏈式表專用)和(陣列表專用)的那些多餘的屬性不應該放到list介面來的,只是當初剛剛有這個方面的靈感的時候沒注意考慮到這些。所以留下了這一大敗筆。但是我實在也想不通,如果不通過繼承,那麼如何保證這些屬性的私有性,而繼承卻正是我想極力避免的東西,極度矛盾中.....
有了線性表的介面,下面要實現的就是實現這個介面了。我們打算實現兩種線性表:1、陣列表,2、鏈式表。首先我們先實現陣列表class arraylist
//arralist.c
void arraylist_destroy(class list *this)
}void arraylist_clear(class list *this)
this->elements = null;
this->length=0;
this->size=this->init_size;}}
boolean arraylist_isempty(class list *this)
object arraylist_get(class list *this,int index)
status arraylist_insert(class list *this,int index,object value)
return success;
}status arraylist_delete(class list *this,int index)
return success;
}class list *arraylist_new(int init_size,int increment)
再來實現乙個鏈式表
void chainlist_destroy(class list *this)
}void chainlist_clear(class list *this)
}boolean chainlist_isempty(class list *this)
class element *chainlist_getelement(class list *this,int index)
object chainlist_get(class list *this,int index)
status chainlist_insert(class list *this,int index,object value)
status chainlist_delete(class list *this,int index)
class list *chainlist_new()
能耐心看到這一篇的說明是高手了...那我就懶得寫注釋了,反正都那麼容易...^-^
下面就僅僅做應用舉例
#include "const.h"
#include "element.h"
#include "element.c"
#include "list.h"
#include "arraylist.c"
#include "chainlist.c"
//由於不管是arraylist,還是chainlist,他們所呼叫的介面是一樣的。
//所以show函式可以通過list介面呼叫他們,當你改變list的實現型別的時候
//可以完全不用修改show裡面的內容
void show(class list *list)
int main(void)
輸出結果:
100 hello mm!
100 hello mm!
瘋狂的程式設計師2
兩周後絕影出院了。出院的時候還是拄著拐杖。這兩周裡,發生了兩件大事 一 絕影決定追乙個妹妹 二 土匪和王江開始做生意了。和每個念大一的學生一樣,土匪和王江想做生意。於是他們就真開始做生意。批發商 說 桌球拍2元一副。想要嗎?要。要就先買原子筆芯,500元買一萬根。為了拿到2元一副的球拍,他們就真買了...
瘋狂學習java web2 css
css應該是樣式描述的意思,定義如下 什麼是 css?doctype html html head style bodyh1pstyle head body h1 css example h1 p this is a paragraph.p body html 比較簡單,而且很明顯,css是寫在he...
《瘋狂Python》學習第2課
位元組串 bytes 由多個位元組組成,以位元組為單位進行操作。bytes 也是不可變序列。bytes 物件只負責以宇節 二進位制格式 序列來記錄資料,至於這些資料到底表示什麼內容,完全由程式決定。如果希望將乙個字串轉換成bytes 物件,有如下三種方式。1 如果字串內容都是ascii 字元,則可以...