最後に、これは希望チャのBuliになります。
StackLinkedList.go
パッケージStackLinkedListの タイプノード構造体{ データint型 の次の*ノード } スタック構造体を入力{ トップ*ノード } FUNC(リスト*スタック)プッシュ(私はint型){ データ:=&ノード{データ:I} !list.top場合= nilの{ データ.next = list.top } list.top =データ } FUNC(リスト*スタック)ポップ()(整数、ブール値){ list.top ==ゼロ{あれば 0を返し、偽 } I:= list.top.data リスト.top = list.top.next リターンI、真 } FUNC(リスト*スタック)PEEK()(整数、ブール値){ list.top場合==ゼロ{ 0を返し、偽 } 戻りlist.top.data、真 } FUNC(リスト*スタック)を取得()[] {int型 のvar項目は[] INT 現在:= list.top !現在= nilの{のため のアイテム=(項目、current.data)追加し 、現在= current.next } 帰り項目を } FUNC (リスト・スタック)のisEmpty()BOOL { 戻りlist.top ==ゼロ } FUNC(リスト*スタック)が空(){ list.top =ニル }
StackLinkedList_test.go
パッケージStackLinkedListの インポート( "FMT" "数学/ランド" "テスト" "時間" ) TestStackLinkedList(T * testing.T){FUNC = rand.New(rand.NewSource(time.Now()UnixNano()):ランダム) ヘッドノード:=&ノード{ データ:random.Intn(100)、 次:ゼロ、 } stackLinkedList:=&スタック{ トップ:ヘッドノード、 } fmt.Println(stackLinkedList.Get()) randNumber:= random.Intn(100) stackLinkedList .Push(randNumber) stackLinkedList.Push(random.Intn(100)) stackLinkedList.Push(random.Intn(100)) stackLinkedList.Push(random.Intn(100)) fmt.Println(stackLinkedList.Get()) retResult、retBool:= stackLinkedList。ポップ() もしretBool ==真{ fmt.Println(retResult) } stackLinkedList.Empty() もしstackLinkedList.IsEmpty()==偽{ t.Fail() } }
出力:
D:試験/Go/bin/go.exe -v [D:/プロジェクト-GO / SRC / StackLinkedList] === RUN TestStackLinkedList [84] [34 26 74 11 84である場合] 図34は、ある --- PASS:TestStackLinkedList(0.00s ) PASS OK StackLinkedList 2.680s 0のプロセス終了コード:成功を。