Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ค้นหาโหนดกลางสุดของรายการที่เชื่อมโยงใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับหน้าที่ในส่วนหัวของรายการที่เชื่อมโยงเป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว

ฟังก์ชันของเราควรคืนค่าที่เก็บไว้ในโหนดกลางสุดของรายการ และหากมีโหนดตรงกลางสุดสองโหนด เราควรส่งคืนโหนดที่สองของโหนดเหล่านั้น

ตัวอย่างเช่น หากรายการเป็นดังนี้:

ป้อนข้อมูล

[4, 6, 8, 9, 1]

ผลผลิต

const output = 8;

ต่อไปนี้เป็นรหัส:

ตัวอย่าง

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));

ผลลัพธ์

8