การเขียน โปรแกรมสร้าง Link List ด้วยภาษา C จัดทำโดย : langjuko พิมพ์

การเขียน โปรแกรมสร้าง Link List ด้วยภาษา C

Link List เป็นการจัดการกับ ข้อมูล ไม่ว่าจะเพื่อ เก็บใว้ใน memory ชั่วคราว หรือเพื่อ เตรียมข้อมูล เพื่อเก็บลง text file

ผมเอง มี code ตัวนี้อยู่มานานแล้วแต่ไม่ค่อยได้เอามาใช้ เพราะส่วนใหญ่ ถ้าจะเก็บข้อมูลจะพึ่ง Database มากกว่า แต่เมื่อ ได้มาคลุกคลี กับ การเก็บลง text file เลยต้อง รื้อ code Link List สมัย เรียน ขึ้นมาดู เมื่อนำมาปัดฝุ่นใช้ใหม่ เลยมีความคิดว่า อยากจะให้ คนอื่นได้ ผลประโยชน์ ในเรื่องนี้ด้วย

ขั้นแรก เราต้องสร้าง structure เพื่อความสะดวก ในการใช้ pointer เรียก ข้อมูลขึ้นมาใช้

struct node{

int data;
struct node *next;
//pointer next
เป็นตัวบอกว่า node ถัดไป อยู่ที่ address ไหน

}datanode;

กำหนดค่าเริ่มต้นของ pointer

struct node *first;
struct node *TempNode;
first = (struct node *)
calloc(sizeof(datanode),1);

// ให้ first เป็นตำแหน่งเริ่มต้นของ Link list
TempNode=first;

ทำการสร้าง Link List โดยในที่นี้ จะให้ ตัวแปรชื่อ datainput เป็นตัวแปรที่รับข้อมูลเข้ามา ไม่ว่าจะ input จาก keyboard หรือ แหล่งอื่นตามที่คุณต้องการ

if (TempNode==first) // เป็นข้อมูล แรก ใน Link List
{

TempNode->data=datainput;
nodetmp=(struct node *) calloc(sizeof(datanode),1);
TempNode->next=nodetmp;
TempNode=nodetmp;

}else if (TempNode!=first) // ถ้าไม่ได้เป็นข้อมูลแรกใน Link List
{

TempNode->data=datainput;
nodetmp = (struct node *) calloc(sizeof(datanode),1);
TempNode->next=nodetmp;

}

การท่องไปใน Link List ( Link List traversal)

nodetmp=first;
while (nodetmp!=NULL) {

printf ("%dn",nodetmp->data);
//
จะ print หรือว่า นำ data ไปใช้ทำอะไร ก็ตามสะดวกเลยครับ
nodetmp=nodetmp->next;

}

การลบ node ก็ไม่มีอะไรมากเลย ครับ แค่เปลี่ย pointer ของ node ก่อนที่จะลบ ไปชี้ node->next ของตัวที่จะลบ ถ้าไม่เข้าใจ ดูจากตัวอย่างดีกว่าครับ

pre->next=nodedel->next;

ผมสมมุติให้ pointer pre คือ node ก่อน ตัวที่ต้องการจะลบ ส่วน nodedel คือ node ที่เราต้องการจะลบ ส่วนการ insert หรือการ แทรก ใน Link List ขั้นแรก เราก็ต้องหา node ที่เราจะทำการ แทรก คล้ายๆ กับ การลบ แหละครับ ผมก็จะสมมุติ ว่า pointer pre เป็น node ที่ เราจะแทรกข้อมูลไป ต่อจาก node นี้ โดยที่มี new เป็น address ของ ข้อมูลใหม่ที่เราต้องการทำไปแทรกใน Link List

new = (struct node *) calloc(sizeof(datanode),1);
new->data=datainput;
new->next=pre->next;
pre->next=new;

คุณอาจสนใจ
การ Copy สูตรไปวางที่ตำแหน่งอื่นโดยไม่ต้องสร้างใหม่
nutthapon (45,791 - 02 ก.ค. 49)
ส่วนประกอบของ Excel 2002 (XP)
Mr.GuruZ (38,103 - 30 ม.ค. 50)
ลดแคช IE6 คืนเนื้อที่ให้ฮาร์ดดิสก์จะทำอย่างไร
เว็บไทยดีดี (14,952 - 29 ก.ย. 50)
Flash Drive & Portable Software ทางเลือกใหม่ของผู้ใช้คอมพิวเตอร์
หมูขุน (20,121 - 15 มี.ค. 51)
วางแผนรับมือจากการโดนโจมตีเครื่องในเน็ตเวิร์ก
เว็บไทยดีดี (14,977 - 29 ก.ย. 50)
การใช้งานเครื่องมือ กล้องและ Render ภาพจากกล้อง
first (36,140 - 13 พ.ย. 51)
การใช้คำสั่ง แบบ if...else
Mr.POP (50,314 - 05 พ.ย. 49)
การทำปุ่มควบคุมการเล่น movie ของ flash
Charoen (69,462 - 21 พ.ย. 50)