ช่วยอธิบายโค้ดหน่อยครับไม่เข้าใจอย่างมาก

// แยก Circular Linked List แบบหลอกแสดง

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


public class recnode
{
    public double Data;  // ก  สัมพันธ์กับที่  ข

    public recnode Link;

}

public class LinkedList
{
    public recnode First;
    public recnode Last;

    public void AddToList(double x)  //  ข   ระวังใช้  parameter  เป็น double เพราะว่า field เก็บข้อมูลเป็น double ดูที่  ก
    {
        recnode node = new recnode();
        node.Data = x;

        if (First == null)
        {
            First = node;
        }
        else
        {
            Last.Link = node;
        }
        Last = node; //Last ขยับไปอยู่ที่ตัวล่าสุดตลอด
    }
  
    public void DisplayAll()
    {
        recnode temp = First;

        while (temp != null)
        {
            Console.WriteLine(temp.Data); //เป็นการนำข้อมูลไปแสดงผลทางจอภาพ
            temp = temp.Link;
        }
    }







    public void Positionnode(double m) //แสดงค่าทั้งหมดจากโหนดที่อินเสริช
    {
        recnode temp = First;
        
        while(temp!=null){
            if(temp.Data == m){
                while(temp != First){
                Console.WriteLine(temp.Data);
                temp = temp.Link;
                } return;
            }
            temp = temp.Link;
        }
    }

    public void subnode(double x)
    {
        recnode temp = First;

        while (temp.Data != x)
        {
            Console.WriteLine(temp.Data);
            temp = temp.Link;
        }
        Console.WriteLine(" ");
        while (temp != null)
        {
            if (temp.Data == x)
            {
                while(temp != null){
                    Console.WriteLine(temp.Data);
                    temp = temp.Link;
                }
                break;
            }
            
        }
      
    }
















    public void subnumnode(double m)
    {
        recnode temp = First;
        
        Console.WriteLine("------------- Subnode -------------");
        while (temp != null)
        {
            if(temp.Data!=m){
            Console.WriteLine(temp.Data);
            temp = temp.Link;
            
            }
        
        }
        Console.WriteLine("------------- ----------------- -------------");
        while(temp.Link != null){
            if(temp.Data ==m){
                while(temp.Link!=null){
                    Console.WriteLine(temp.Data);
                    temp = temp.Link;
                }
            }
            temp = temp.Link;
        }
        Console.WriteLine("------------- -------------------- -------------");
        
    }
  
    public void InsertNode(double k , double m)  // แสดงเฉพาะ node ที่ต้องการคือ  x  ที่ส่งมา
    {
        {
            recnode temp = First;
            recnode node = new recnode();
            node.Data = k;
            node.Link = null;
            while (temp != null)
            {

                if (m == temp.Data) //ถ้า x มีค่าเท่ากับ temp.Data ให้ทำเงื่อนไขดังนี้
                {
                    
                    node.Link = temp.Link;
                    temp.Link = node;
                    Console.WriteLine("\n node is inserted ");
                    Positionnode(m); //ส่งค่าเข้าไปในฟังชั่น Position เพื่อนคนหาโหนดที่แสดงและแสดงต่อจากนั้น
                    return;
                }
                else//ถ้าไม่ใหเทำดังนี้
                    temp = temp.Link;
                    Last = node;
                
          

      if (temp == First)
                {
                    Console.WriteLine("No Insert Node");
                    temp = null;
                }
            }
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        LinkedList slink = new LinkedList();
    
        slink.AddToList(72);
        slink.AddToList(63);
        slink.AddToList(56);
        slink.AddToList(47);
        slink.AddToList(31);
        slink.AddToList(25);
        slink.AddToList(12);
      
        slink.DisplayAll();

        Console.WriteLine("\n\n  !!!!!!!!!!!!! Displayall  !!!!!!!!!!!!!!!!!!!!!\n\n");
        slink.subnode(47);
    
        Console.ReadLine();

    }
}
    

**รบกวนคอมเม้นอธิบายไว้ข้างหลังให้หน่อยนะครับ**
ช่วยหน่อยนะครับใกล้จะส่งแล้วววTT
ขอบคุณครับ
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 1
ไปทำความเข้าใจ Linked List ก่อนครับ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่