Chuyển đổi danh sách thành danh sách liên kết python

Điều này có thể đạt được bằng cách duyệt cây theo thứ tự, trái nút con -> gốc -> nút phải. Duyệt cây con bên trái và chuyển nó thành danh sách liên kết kép bằng cách thêm các nút vào cuối danh sách. Theo cách này, nút ngoài cùng bên trái sẽ trở thành đầu danh sách. Sau đó, chuyển cây con bên phải thành danh sách liên kết kép

Trong bài này chúng ta sẽ tìm hiểu về cách chuyển danh sách liên kết thành mảng bằng chương trình golang

Danh sách được liên kết - Các phần tử trong danh sách được liên kết thường không được lưu trữ gần nhau và cấu trúc lưu trữ của chúng ít cứng nhắc hơn, chúng phải được lưu trữ bằng các thẻ bổ sung đề cập đến phần tử tiếp theo. Danh sách được liên kết là một cấu trúc được tạo động, nó có hai phần tử trong đó, một là lưu trữ giá trị và phần còn lại là lưu trữ địa chỉ của cấu trúc tiếp theo

Mảng - Trong mảng, các phần tử được lưu trữ trong các vị trí bộ nhớ liền kề với các địa chỉ dễ tính toán, cho phép truy cập nhanh hơn vào một phần tử tại một chỉ mục nhất định. Có thể truy cập bất kỳ phần tử nào của mảng chỉ bằng cách lập chỉ mục trên mảng

Cú pháp của một mảng trong Golang

var array_name[length]Type

Để xác định một mảng, chúng ta cần xác định một biến theo sau là tên của mảng mà chúng ta muốn cung cấp, sau đó là kích thước của các phần tử mà nó sẽ chứa, sau đó là kiểu dữ liệu mà mảng sẽ chứa

Cú pháp của một Linked List trong Golang

type name_of_list struct {
   variable type
   pointer 
}

Danh sách liên kết bắt đầu bằng từ khóa type gợi ý rằng chúng ta đang xác định một kiểu mới theo sau là tên của nó và từ khóa struct sau đó chúng ta cần xác định biến để lưu dữ liệu và biến con trỏ để lưu địa chỉ của nút

Ví dụ

Mã chương trình Golang để chuyển đổi một danh sách được liên kết thành một mảng

package main

// fmt package allows us to print anything on the screen
import "fmt"

// describing a node that contains data and the address of the next node
type node struct {
   data int
   next *node
}

// defining a type LinkedList that contains the address of the head node and the length of the node
type linkedlist struct {
   len  int
   head *node
}

// function to get the address of the linked list
func initList() *linkedlist {
   return &linkedlist{}
}

// function to add a new node
func (l *linkedlist) prepend(data int) {
   node := &node{
      data: data,
   }

   if l.head == nil {
      l.head = node
   } else {
      node.next = l.head
      l.head = node
   }
   l.len++
   return
}

// function to get the size of the linked list
func (s *linkedlist) Size() int {
   return s.len
}

// Function to convert a singly linked list to an array
func (s *linkedlist) ToArray() []int {
   // creating an array of integers named myarr
   var myarr []int

   // storing the first address of the list to a variable called the current
   current := s.head

   // traversing over the list until it is empty and appending the current value to the array
   for current.next != nil {
      fmt.Printf("\nAdding Element to array: %d", current.data)
      myarr = append(myarr, current.data)

      // updating the address of the current variable with the address of the next node
      current = current.next
   }
   fmt.Printf("\nAdding Element to array: %d", current.data)
   myarr = append(myarr, current.data)
   // returning the array thus formed
   return myarr
}

func main() {
   // creating a new list named mylist
   mylist := initList()

   // adding elements to the linked list
   fmt.Printf("converting the below elements into array")
   mylist.prepend(100)
   mylist.prepend(200)
   mylist.prepend(300)
   mylist.prepend(400)

   // calling the ToArray() function to convert values of the linked list
   myarr := mylist.ToArray()
   fmt.Printf("\nThe size of the linked list is: %d\n", mylist.Size())
   // printing the final array
   fmt.Println("\nThe final array obtained from the linked list is:", myarr)
}

đầu ra

converting the below elements into array
Adding Element to array: 400
Adding Element to array: 300
Adding Element to array: 200
Adding Element to array: 100
The size of the linked list is: 4

The final array obtained from the linked list is: [400 300 200 100]

Mô tả của Mã

  • Đầu tiên, chúng ta cần nhập gói fmt cho phép chúng ta in bất cứ thứ gì trên màn hình

  • Sau đó, chúng ta cần xác định một cấu trúc mới có tên là nút sẽ chứa dữ liệu cũng như địa chỉ của nút tiếp theo

  • Sau đó, chúng tôi tạo một cấu trúc LinkedList chứa độ dài của danh sách cũng như con trỏ tới nút đầu của danh sách được liên kết. Đầu là phần tử đầu tiên hiện tại của danh sách từ nơi danh sách bắt đầu

  • Sau đó, chúng ta cần xác định một số chức năng. Hàm đầu tiên là initlist() trả về địa chỉ của danh sách liên kết và hàm size sẽ cung cấp cho chúng ta kích thước của danh sách được liên kết

  • Chúng tôi cũng cần một chức năng để thêm một nút mới vào đầu danh sách được liên kết mỗi khi chúng tôi muốn thêm một phần tử mới mà chúng tôi đã tạo một chức năng prepend()

  • Hàm này sẽ nhận một giá trị số nguyên làm tham số và sẽ cập nhật giá trị đó vào phần tử dữ liệu của nút và sẽ cập nhật phần đầu

  • Tiếp theo, chúng ta cần một hàm để chuyển đổi các giá trị danh sách được liên kết thành mảng cho điều này, chúng ta đã xác định ToArray()

  • Hàm này được định nghĩa trên danh sách liên kết và trả về mảng các số nguyên. Tạo mảng mà chúng tôi muốn lưu trữ các giá trị của danh sách được liên kết. Lưu phần đầu hiện tại của danh sách vào một biến có tên là hiện tại. Duyệt qua danh sách cho đến khi nó trống và nối thêm mảng có giá trị hiện tại vào danh sách. cập nhật địa chỉ của biến hiện tại với địa chỉ của nút tiếp theo

  • Bây giờ, bắt đầu hàm main() bắt đầu danh sách mới và nối các giá trị vào đó. Sau đó gọi hàm ToArray() để chuyển các giá trị danh sách liên kết này sang mảng và in ra màn hình

Phần kết luận

Trong bài viết này, chúng tôi đã tuân thủ và thực hiện thành công một chương trình ngôn ngữ go để chuyển đổi một danh sách liên kết đơn sang một mảng

Làm cách nào để chuyển đổi mảng thành danh sách được liên kết trong Python?

Cho một mảng arr[] có kích thước N. Nhiệm vụ là tạo danh sách liên kết từ mảng đã cho. Cách tiếp cận đơn giản. Đối với mỗi phần tử của một mảng arr[] chúng ta tạo một nút trong danh sách liên kết và chèn nó vào cuối .

Danh sách và danh sách được liên kết có giống nhau trong Python không?

Danh sách được liên kết khác với danh sách ở chỗ chúng lưu trữ các phần tử trong bộ nhớ . Trong khi các danh sách sử dụng một khối bộ nhớ liền kề để lưu trữ các tham chiếu đến dữ liệu của chúng, thì các danh sách được liên kết lưu trữ các tham chiếu như một phần của các phần tử riêng của chúng.

Bạn có thể tạo danh sách liên kết bằng Python không?

Danh sách liên kết là một dãy các phần tử dữ liệu được kết nối với nhau thông qua các liên kết. Mỗi phần tử dữ liệu chứa một kết nối đến một phần tử dữ liệu khác dưới dạng một con trỏ. Python không có danh sách liên kết trong thư viện chuẩn của nó

Bạn có thể chuyển đổi danh sách thành chuỗi trong Python không?

Để chuyển đổi danh sách thành chuỗi, hãy sử dụng chức năng Hiểu danh sách Python và hàm join() . Việc hiểu danh sách sẽ duyệt qua từng phần tử một và phương thức nối () sẽ nối các phần tử của danh sách thành một chuỗi mới và trả về nó dưới dạng đầu ra.