สาเหตุที่เริ่มแรกต้องกำหนด root เป็น null ก็เพราะเดิมทีลิสต์ว่างเปล่า

         ก่อนอื่นต้องกำหนดค่าเริ่มต้นให้พอยเตอร์ชื่อ  Root  เก็บค่า null  root  ทำหน้าที่เป็นพอยเตอร์ชี้ที่หัวลิสต์เสมอ  สาเหตุที่เริ่มแรกต้องกำหนด  root  เป็น null  ก็เพราะเดิมทีลิสต์ว่างเปล่า  จึงยังไม่มีโหนดใดๆปรากฏอยู่ในลิสต์เรย์

 

 

ขั้นตอนวิธี

ภาพของลิงค์ลิสต์

1.กำหนดค่าเริ่มต้นให้ root  เป็น NULLด้วยคำสั่ง

Root = NULL

                root

2. สร้างโหนดใหม่เพื่ออ่านข้อมูลตัวแรกจากแป้นพิมพ์เข้าไปเก็บในโหนดที่สร้างใหม่จากนั้นให้นำไปแทรกด้านหน้าทางลิสต์ด้วยคำสั่ง

P = new Ptr ;

Scanf (“%s ”,p -> name) ;

P ->next = root ;

Root = p ;

 

 

  P                                     

                                            P = new Ptr ;

Anong

 

 

P                                         scanf(“%s ”,p            

                                      -> name) ;

 

 

Anong

P                                         p->next = root ;

 

 

Anong

P                                         root = p;

 


     root

3.สร้างโหนดใหม่ แล้วอ่านข้อมูลตัวถัดไปเข้าไปเก็บในโหมดที่สร้างใหม่  จากนั้นให้นำไปแทรกที่ด้านหน้า

                    .

                   .

                    .

 

 

 

Malee

root                                       

p

                          .

                           .

                            .

                       ทำเช่นนี้ไปเรื่อยๆ  จนกว่าจะอ่านข้อมูลหมด  ท้ายที่สุดลิงค์ลิสต์ที่สร้างจากข้อมูลที่ป้อนทางแป้นพิมพ์  มีลักษณะดังนี้

 

Yupa

 

Malee

 

Anong

 

Suda

 


root                                  

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

        Void insFront  (Ptr  **root)

         {

                        Ptr  *p;

                        Int  id;

                        *root  =  null;

                        /*เริ่มแรกกำหนดให้rootมีค่าNULL เพราะลิงค์ลิสต์ยังว่างเปล่า*/

                       while  (scanf(“%d ”,&id)   !=EOF)  )

                 {

                        p=new  Ptr ;                                             /*สร้างโหนดใหม่*/

                        p  - >id = id ;                                            /*เก็บรหัสในฟิลด์ id*/

                        gets (p - >name) ;                                     /*อ่านชื่อเก็บในฟิลด์ name*/

                        p -> next = *root ;                                    /*เอาโหนดต่อหน้าหน้าลิสต์*/

                        * root = p;                                /*ต่อเสร็จเลื่อนrootชี้หน้าสุดของลิสต์*/

                  }

          }            /*insFront*/