スタックリストStackLinkedListのデータ構造とアルゴリズムをgolang

最後に、これは希望チャの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のプロセス終了コード:成功を。

  

おすすめ

転載: www.cnblogs.com/aguncn/p/11712101.html