瘋狂指標 2

2021-04-02 23:24:54 字數 1879 閱讀 7571

進行到現在,我們已經建立了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 字元,則可以...