Menu
CoddyTech

Ôn tập: xây dựng danh sách liên kết

Thuộc phần Lập trình hướng đối tượng trong hành trình GO của Coddy. Bài học 24 trên 107.

challenge icon

Thử thách

Dễ

Hãy tự xây dựng một danh sách liên kết nhé! Bạn sẽ tạo một cấu trúc dữ liệu trong đó mỗi nút trỏ đến nút tiếp theo, tạo thành một chuỗi các giá trị liên kết với nhau trong bộ nhớ.

Bạn sẽ sắp xếp code trong hai tệp:

  • linkedlist.go: Định nghĩa một cấu trúc Node với các trường Value (int) và Next (*Node). Tạo cấu trúc LinkedList lưu con trỏ đến nút Head. Cài đặt các phương thức sau cho *LinkedList:
    • Append - thêm một nút mới có giá trị đã cho vào cuối danh sách
    • Prepend - thêm một nút mới có giá trị đã cho vào đầu danh sách
    • Print - duyệt danh sách và in ra tất cả giá trị, ngăn cách bằng -> , kết thúc bằng nil
  • main.go: Đọc các giá trị từ đầu vào, tạo danh sách liên kết bằng cách thêm nút vào cuối và đầu danh sách, sau đó in ra cấu trúc danh sách cuối cùng.

Đầu vào sẽ gồm các giá trị sau:

  • Dòng 1: Giá trị đầu tiên cần thêm vào cuối danh sách
  • Dòng 2: Giá trị thứ hai cần thêm vào cuối danh sách
  • Dòng 3: Giá trị cần thêm vào đầu danh sách

Phương thức Print của bạn cần in ra danh sách theo định dạng sau:

[value1] -> [value2] -> [value3] -> nil

Ví dụ, với các giá trị 10, 20 và 5, kết quả cần in ra là:

5 -> 10 -> 20 -> nil

Phương thức Append cần duyệt đến cuối danh sách, nơi Next là nil, rồi mới thêm nút mới. Phương thức Prepend cần tạo một nút mới, cho Next của nút đó trỏ đến nút đầu hiện tại, rồi cập nhật nút đầu thành nút mới. Hãy nhớ rằng danh sách rỗng có nút đầu là nil, vì vậy hãy xử lý trường hợp đó trong phương thức Append.

Tự làm thử

package main

import "fmt"

func main() {
	// Đọc các giá trị đầu vào
	var val1, val2, val3 int
	fmt.Scanln(&val1)
	fmt.Scanln(&val2)
	fmt.Scanln(&val3)

	// Tạo một danh sách liên kết mới
	list := &LinkedList{}

	// TODO: Dùng Append để thêm val1 và val2 vào danh sách

	// TODO: Dùng Prepend để thêm val3 vào đầu danh sách

	// TODO: In ra cấu trúc cuối cùng của danh sách
}

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch Go online