Who's Online

มี 23 ผู้มาเยือน และ ไม่มีสมาชิกออนไลน์ ออนไลน์

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

ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

การเขียน โปรแกรมสร้าง 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;

 

About I-Comz

bcomz.com เป็นส่วนหนึ่งของงานซ่อมคอมพิวเตอร์นอกสถานที่ บางกะปิ รามคำแหง ซึ่งมีประสบการณ์การซ่อมและการค้าขาย มากกว่า 10 ปี โดยมอบประสบการณ์การช้อปปิ้งและช่องทางการขายปลีกที่สะดวกสบายสำหรับผู้บริโภคและมอบแพลตฟอร์มสำหรับผู้ค้าให้สามารถเข้าถึงฐานลูกค้าที่ใหญ่ที่สุดในเอเชียตะวันออกเฉียงใต้ได้อย่างง่ายดาย

Counter

เนื้อหาที่เปิดอ่าน
116478
©2024 ซ่อมคอมพิวเตอร์นอกสถานที่ All Rights Reserved. Designed By Becomz

Search