Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm nút giữa cùng của danh sách được liên kết trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy phần đầu của danh sách được liên kết làm đối số đầu tiên và duy nhất.

Hàm của chúng ta sẽ trả về giá trị được lưu trữ trong nút giữa cùng của danh sách. Và nếu có hai nút ở giữa, chúng ta nên trả về nút thứ hai trong số đó.

Ví dụ:nếu danh sách như thế này:

Đầu vào

[4, 6, 8, 9, 1]

Đầu ra

const output = 8;

Sau đây là mã:

Ví dụ

class Node {
   constructor(data) {
      this.data = data;
      this.next = null;
   };
};
class LinkedList {
   constructor() {
      this.head = null;
      this.size = 0;
   };
};
LinkedList.prototype.add = function(data) {
   const newNode = new Node(data);
   let curr;
      if(this.head === null) {
         this.head = newNode;
      } else {
         curr = this.head;
         while(curr.next) {
            curr = curr.next;
      }
      curr.next = newNode;
   };
      this.size++;
};
const list = new LinkedList();
list.add(4);
list.add(6);
list.add(8);
list.add(9);
list.add(1);
const findMiddle = (head) => {
   let slow = head
   let fast = head
   while(fast && fast.next) {
      slow = slow.next
      fast = fast.next.next
   }
   return slow.data
};
console.log(findMiddle(list.head));

Đầu ra

8