Skip to content

Instantly share code, notes, and snippets.

@xvbnm48
Last active June 3, 2025 09:07
Show Gist options
  • Save xvbnm48/4783fa9cc18f93b663d25faede0e5f08 to your computer and use it in GitHub Desktop.
Save xvbnm48/4783fa9cc18f93b663d25faede0e5f08 to your computer and use it in GitHub Desktop.
linked_list.go
package main
import "fmt"
type KeretaNode struct {
data string
next *KeretaNode
}
func BuatGerbongKereta(data string) *KeretaNode {
gerbong3 := &KeretaNode{data: "Gerbong 3", next: nil}
gerbong2 := &KeretaNode{data: "Gerbong 2", next: gerbong3}
gerbong1 := &KeretaNode{data: "Gerbong 1", next: gerbong2}
gerbong := &KeretaNode{data: data, next: gerbong1}
return gerbong
}
func CetakKereta(gerbong *KeretaNode) {
current := gerbong
for current != nil {
println(current.data)
current = current.next
}
fmt.Println("Kereta selesai!")
}
func TambahGerbongBelakang(kereta *KeretaNode, data string) *KeretaNode {
newGerbong := &KeretaNode{data: data, next: nil}
if kereta == nil {
return newGerbong
}
gerbong := kereta
for gerbong.next != nil {
gerbong = gerbong.next
}
gerbong.next = newGerbong
return kereta
}
// cari gerbong kereta
func CariGerbong(kereta *KeretaNode, data string) *KeretaNode {
current := kereta
for current != nil {
if current.data == data {
return current
}
current = current.next
}
return nil // jika tidak ditemukan
}
func main() {
kereta := BuatGerbongKereta("Kereta Api Jaka Tingkir")
fmt.Println("Kereta yang dibuat:")
CetakKereta(kereta)
// tambah gerbong baru
newGerbong := &KeretaNode{data: "Gerbong 4", next: nil}
TambahGerbongBelakang(kereta, newGerbong.data)
newGerbong2 := &KeretaNode{data: "Gerbong 5", next: nil}
TambahGerbongBelakang(kereta, newGerbong2.data)
CetakKereta(kereta)
// cari gerbong
gerbongDicari := "Gerbong 2"
gerbongDitemukan := CariGerbong(kereta, gerbongDicari)
if gerbongDitemukan != nil {
fmt.Printf("Gerbong '%s' ditemukan!\n", gerbongDitemukan.data)
} else {
fmt.Printf("Gerbong '%s' tidak ditemukan!\n", gerbongDicari)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment