คำถามและคำตอบสัมภาษณ์รายการเชื่อมโยง 17 อันดับแรก
ต่อไปนี้เป็นคำถามและคำตอบในการสัมภาษณ์ใน Linked List สำหรับนักศึกษาใหม่และผู้สมัครที่มีประสบการณ์เพื่อให้ได้งานในฝัน
1) พูดถึงรายการที่เชื่อมโยงคืออะไร?
รายการที่เชื่อมโยงคือโครงสร้างข้อมูลที่สามารถจัดเก็บคอลเลกชันของรายการได้ กล่าวอีกนัยหนึ่ง รายการลิงก์สามารถใช้เพื่อจัดเก็บออบเจ็กต์ประเภทเดียวกันหลายรายการได้ แต่ละหน่วยหรือองค์ประกอบของรายการเรียกว่าโหนด แต่ละโหนดมีข้อมูลของตัวเองและที่อยู่ของโหนดถัดไป มันก็เหมือนโซ่ รายการที่เชื่อมโยงใช้ในการสร้างกราฟและต้นไม้
ดาวน์โหลดไฟล์ PDF ฟรี: รายการลิงค์คำถามและคำตอบสัมภาษณ์
2) การจัดสรรหน่วยความจำประเภทใดที่อ้างถึงสำหรับรายการที่เชื่อมโยง
การจัดสรรหน่วยความจำแบบไดนามิกมีการอ้างอิงถึงรายการที่เชื่อมโยง
3) พูดถึงการแวะผ่านในรายการที่เชื่อมโยงคืออะไร?
Term Traversal ใช้เพื่ออ้างอิงการดำเนินการประมวลผลแต่ละองค์ประกอบในรายการ
4) อธิบายว่า Node ในรายการลิงก์คืออะไร และตั้งชื่อประเภทของ Linked Lists อย่างไร?
ร่วมกัน (ข้อมูล + ลิงค์) เรียกว่าโหนด ประเภทของ Linked List ได้แก่
- รายการที่เชื่อมโยงเพียงรายการเดียว
- รายการที่เชื่อมโยงเป็นสองเท่า
- ทวีคูณรายการที่เชื่อมโยง
- รายการที่เชื่อมโยงแบบวงกลม
5) พูดถึง Singly Linked list คืออะไร?
Singlely Linked list เป็นประเภทของ โครงสร้างข้อมูลในรายการที่เชื่อมโยงแบบเดี่ยว โหนดแต่ละโหนดในรายการจะจัดเก็บเนื้อหาของโหนดและการอ้างอิงหรือตัวชี้ไปยังโหนดถัดไปในรายการ โดยจะไม่จัดเก็บการอ้างอิงหรือตัวชี้ไปยังโหนดก่อนหน้า
6) พูดถึงความแตกต่างระหว่างเชิงเส้นคืออะไร แถว และรายการที่เชื่อมโยง?
ความแตกต่างระหว่าง Linear Array และ Linked List แสดงไว้ด้านล่าง
อาร์เรย์เป็น Linear | รายการที่เชื่อมโยง |
---|---|
การลบและการแทรกทำได้ยาก | การลบและการแทรกสามารถทำได้อย่างง่ายดาย |
ในการแทรกและการลบ จำเป็นต้องมีการเคลื่อนไหว | สำหรับการแทรกและการลบ ไม่จำเป็นต้องมีการเคลื่อนย้ายโหนด |
ในนั้นเปลืองพื้นที่ | พื้นที่ในนั้นไม่สูญเปล่า |
มันแพง | มันไม่แพง |
ไม่สามารถลดหรือขยายได้ตามความต้องการ | สามารถลดหรือขยายได้ตามความต้องการ |
เพื่อประโยชน์ของแต่ละองค์ประกอบต้องใช้เวลาเท่ากัน | เพื่อประโยชน์ของแต่ละองค์ประกอบต้องใช้เวลาต่างกัน |
องค์ประกอบตำแหน่งหน่วยความจำที่ต่อเนื่องกันจะถูกจัดเก็บไว้ | องค์ประกอบอาจหรืออาจจะไม่ถูกจัดเก็บไว้ในตำแหน่งหน่วยความจำต่อเนื่องกัน |
เราสามารถเข้าถึงที่นั่นได้โดยตรงหากเราต้องไปที่องค์ประกอบใดองค์ประกอบหนึ่ง | ในการเข้าถึงโหนดใดโหนดหนึ่ง คุณจะต้องผ่านโหนดทั้งหมดที่มาก่อนโหนดนั้น |
7) กล่าวถึงการใช้งานของ Linked Lists คืออะไร?
การใช้งานของ Linked List คือ
- รายการที่เชื่อมโยงจะใช้ในการสร้างคิว สแต็ค กราฟ ฯลฯ
- ใน Linked Lists คุณไม่จำเป็นต้องทราบขนาดล่วงหน้า
- รายการที่เชื่อมโยงช่วยให้คุณสามารถแทรกองค์ประกอบที่จุดเริ่มต้นและจุดสิ้นสุดของรายการได้
8) ส่วนหัวจำลองในรายการที่เชื่อมโยงประกอบด้วยอะไรบ้าง?
ในรายการที่เชื่อมโยง ส่วนหัวจำลองประกอบด้วยบันทึกแรกของข้อมูลจริง
9) กล่าวถึงขั้นตอนในการแทรกข้อมูลที่จุดเริ่มต้นของรายการลิงค์เดี่ยวหรือไม่?
ขั้นตอนการแทรกข้อมูลที่จุดเริ่มต้นของรายการที่เชื่อมโยงเดี่ยว ได้แก่
- สร้างโหนดใหม่
- แทรกโหนดใหม่โดยการจัดสรรตัวชี้ส่วนหัวให้กับโหนดใหม่ตัวชี้ถัดไป
- การอัปเดตตัวชี้ส่วนหัวไปยังจุดโหนดใหม่
Node *head; void InsertNodeAtFront(int data) { /* 1. create the new node*/ Node *temp = new Node; temp->data = data; /* 2. insert it at the first position*/ temp->next = head; /* 3. update the head to point to this new node*/ head = temp; }
10) พูดถึงความแตกต่างระหว่างรายการเชื่อมโยงเดี่ยวและรายการเชื่อมโยงคู่คืออะไร?
โหนดรายการที่เชื่อมโยงแบบทวีคูณประกอบด้วยสามฟิลด์:
- ค่าจำนวนเต็มและ
- สองลิงก์ไปยังโหนดอื่น
- อันหนึ่งเพื่อชี้ไปที่โหนดก่อนหน้าและ
- อื่นๆ เพื่อชี้ไปยังโหนดถัดไป
ในขณะที่รายการเชื่อมโยงเดี่ยวมีจุดไปยังโหนดถัดไปเท่านั้น
11) พูดถึงแอปพลิเคชันใดบ้างที่ใช้รายการเชื่อมโยง?
ทั้งคิวและสแต็กมักจะใช้งานโดยใช้รายการลิงก์ แอปพลิเคชันอื่นๆ ได้แก่ รายการ ต้นไม้ไบนารี สคิป รายการลิงก์ที่คลี่ออก ตารางแฮช เป็นต้น
12) อธิบายวิธีการเพิ่มรายการไปที่จุดเริ่มต้นของรายการ?
หากต้องการเพิ่มรายการไปที่จุดเริ่มต้นของรายการ คุณต้องดำเนินการดังต่อไปนี้:
- สร้างรายการใหม่และตั้งค่าของมัน
- เชื่อมโยงรายการใหม่เพื่อชี้ไปที่ส่วนหัวของรายการ
- ตั้งส่วนหัวของรายการให้เป็นรายการใหม่ของเรา
หากคุณใช้ฟังก์ชันในการดำเนินการนี้ คุณจะต้องแก้ไขตัวแปร head เมื่อต้องการทำเช่นนี้ คุณต้องส่งตัวชี้ไปยังตัวแปรตัวชี้ (ตัวชี้คู่) ดังนั้นคุณจะสามารถแก้ไขตัวชี้ได้เอง
13) กล่าวถึงข้อได้เปรียบที่ใหญ่ที่สุดของรายการที่เชื่อมโยงคืออะไร?
ประโยชน์สูงสุดของรายการที่เชื่อมโยงคือ คุณไม่ได้ระบุขนาดคงที่สำหรับรายการของคุณ ยิ่งคุณเพิ่มองค์ประกอบลงในห่วงโซ่มากเท่าไร ห่วงโซ่ก็จะยิ่งใหญ่ขึ้นเท่านั้น
14) พูดถึงวิธีการลบโหนดแรกออกจากรายการที่เชื่อมโยงโดยลำพัง?
หากต้องการลบโหนดแรกออกจากรายการเชื่อมโยงเดี่ยว
- จัดเก็บการเริ่มต้นปัจจุบันในตัวชี้ชั่วคราวอื่น
- เลื่อนตัวชี้เริ่มไปข้างหน้าหนึ่งตำแหน่ง
- ลบ temp เช่น โหนดเริ่มต้นก่อนหน้า เนื่องจากเราได้อัปเดตเวอร์ชันของ Start Pointer แล้ว
15) พูดถึงวิธีการแสดงรายการที่เชื่อมโยงเดี่ยวจากรายการแรกไปรายการสุดท้าย?
หากต้องการแสดงรายการลิงค์เดี่ยวจากรายการแรกไปรายการสุดท้าย
- สร้างรายการเชื่อมโยงโดยใช้ create()
- คุณไม่สามารถเปลี่ยนที่อยู่ที่เก็บไว้ในตัวแปรส่วนกลาง "เริ่มต้น" ดังนั้นคุณต้องประกาศตัวแปรชั่วคราวหนึ่งตัว - "temp" ของโหนดประเภท
- หากต้องการสำรวจตั้งแต่ต้นจนจบ คุณควรจัดสรรที่อยู่ของโหนดเริ่มต้นในตัวแปร Pointer เช่น temp
struct node *temp; //Declare temp temp = start; //Assign Starting Address to temp
หากอุณหภูมิเป็น NULL คุณสามารถบอกได้ว่าถึงโหนดสุดท้ายแล้ว
while(temp!=NULL) { printf("%d",temp->data); temp=temp->next; }
16) พูดถึงวิธีการแทรกโหนดใหม่ในรายการที่เชื่อมโยงซึ่งจะมีโหนดว่างให้ใช้งานได้?
หากต้องการแทรกโหนดใหม่ในรายการที่เชื่อมโยง โหนดอิสระจะพร้อมใช้งานในรายการความพร้อม
17) เมื่อกล่าวถึงรายการส่วนหัวใด คุณจะพบว่าโหนดสุดท้ายมีตัวชี้ว่าง
สำหรับรายการส่วนหัวที่มีการต่อสายดินคุณจะพบว่าโหนดสุดท้ายมีตัวชี้ว่าง
คำถามสัมภาษณ์เหล่านี้จะช่วยในวีว่าของคุณ (วาจา)
ดีมาก
มันเป็นคำถามที่ดีทีเดียว………………
มันช่วยฉันได้มากขอบคุณ
ได้โปรดฉันจะแก้ไขปัญหานี้ได้อย่างไร
(รายการที่เชื่อมโยงกับโหนดหัวจำลอง)
ให้สองรายการที่เชื่อมโยง L1 และ L2 ตัดสินใจขั้นตอนในภาษาหลอกที่ใช้รายการที่เชื่อมโยง ADT เพื่อแทรก L2 หลังองค์ประกอบที่สามจากสุดท้ายของ L1
ถ้า L1 คือ 1-2-3-4-5-6-7-8-9 และ L2 คือ 1-1-1
The result is 1-2-3-4-5-6-7-1-1-1-8-9
คุณต้องเคลื่อนที่ผ่าน L1 ก่อนโดยใช้พอยน์เตอร์สองตัว:
pointer1 – ห่างจากศีรษะหนึ่งก้าว
pointer2 – 3 ก้าวจากศีรษะ
ในขณะที่ (pointer2.next!=null){
ตัวชี้2 = ตัวชี้2.ถัดไป;
ตัวชี้1 = ตัวชี้1.ถัดไป;
}
// ตอนนี้คุณจะมีพอยน์เตอร์ 1 ชี้ไปที่โหนดที่ 3 จากจุดสุดท้าย
อุณหภูมิ = pointer1.next
pointer1.next = L2;
traversL2 ไปยังจุดสิ้นสุดเพื่อรับองค์ประกอบสุดท้าย ->
LastElementOfL2.Next = อุณหภูมิ;
...
ดีมาก