โครงสร้างข้อมูล

โครงสร้างข้อมูลในภาษา C

โครงสร้างข้อมูล (structure) คือกลุ่มของตัวแปรที่สามารถสร้างและเก็บไว้ในตัวแปรเดียวที่เรียกว่า data structure ในภาษา C เราสามารถสร้างและออกแบบโครงสร้างข้อมูลของเราได้ตามที่ต้องการ โดยโครงสร้างข้อมูลจะมีสมาชิกที่เป็นตัวแปร (members) และฟังก์ชันได้ในเวลาเดียวกัน

การประกาศโครงสร้างข้อมูล

ในภาษา C การประกาศโครงสร้างข้อมูลมีรูปแบบดังนี้

struct struct_name {
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
.
.
} object_names;

เราใช้คำสั่ง struct ในการประกาศโครงสร้างข้อมูล struct_name เป็นชื่อของโครงสร้างข้อมูลโดยมีรูปแบบการตั้งชื่อเหมือนตัวแปร คือเป็นตัวอักษร ตัวเลข และเครื่องหมาย underscore (_) และต้องไม่ขึ้นต้นด้วยตัวเลข ในบล็อคของ structure จะเป็นการประกาศสมาชิก (members) ซึ่งสามารถเป็นได้ทั้งตัวแปรและฟังก์ชัน สำหรับ object_names เป็นตัวแปรออบเจ็คของโครงสร้างข้อมูล ซึ่งเป็นทางเลือกในการประกาศ มาดูตัวอย่าง

struct person {
char name[20];
int age;
float money;
} student, teacher;

ในตัวอย่าง เราได้สร้างโครงสร้างข้อมูลชื่อว่า person โดยมีสมาชิก 3 ตัว โดยเป็นตัวแปรที่เก็บข้อมูลประเภทต่างๆ ที่เป็น name, age และ money สำหรับสมาชิกของโครงสร้างข้อมูล คุณไม่สามารถกำหนดค่าเริ่มต้นเหมือนการประกาศตัวแปรได้ และเราได้สร้างตัวแปรออบเจ็คของโครงสร้างข้อมูลนี้คือ student และ teacher อย่างไรก็ตามเราสามารถสร้างตัวแปรออบเจคนี้ได้ภายหลังเมื่อตอนโปรแกรมรัน โดยใช้คำสั่ง

struct person student, teacher;

การกำหนดค่าและอ่านข้อมูลจากโครงสร้างข้อมูล

หลังจากที่เราได้ประกาศโครงสร้างข้อมูลของเราเรียบร้อยแล้ว ต่อไปเราจะกำหนดค่าให้กับโครงสร้างข้อมูลของเรา

#include <stdio.h>

struct person {
char name[20];
int age;
float money;
};

int main() {
struct person student, teacher;

strcpy(student.name, "Marcus");
student.age = 18;
student.money = 10.25;

strcpy(teacher.name, "James");
teacher.age = 20;
teacher.money = 49.5;

printf("%s has age %d and money %.2f usd\n", student.name, student.age, student.money);
printf("%s has age %d and money %.2f usd\n", teacher.name, teacher.age, teacher.money);

return 0;
}

ในตัวอย่างเราได้ประกาศตัวแปรออบเจ็คของโครงสร้างข้อมูล person มาสองตัวคือ student และ teacher โดยใช้คำสั่ง

struct person student, teacher;

หลังจากที่ประกาศแล้วเราสามารถเข้าถึงข้อมูลโดยการใช้ ชื่อของออบเจคที่สร้างขึ้น ตามด้วยเครื่องหมายจุด (.) และชื่อสมาชิก เช่น student.name เป็นการเข้าถึงตัวแปร name ของออบเจค student สำหรับการกำหนดค่าให้กับตัวแปร char array เราจะใช้ฟังก์ชัน strcpy และในตอนท้ายเราแสดงข้อมูลเหล่านั้นออกทางหน้าจอ ซึ่งจะได้ผลลัพธ์ดังนี้

Marcus has age 18 and money 10.25 usd
James has age 20 and money 49.50 usd

นี่เป็นผลลัพธ์การทำงานของการใช้งานโครงสร้างข้อมูลในภาษา C คุณจะเก็นได้ว่าเราสามารถเก็บข้อมูลได้หลาอย่างในตัวแปรเดียว ซึ่งเราเรียกตัวแปรนั้นว่าออบเจ็ค ซึ่งเป็นข้อมูลที่ประกอบไปด้วยข้อมูลย่อยในตัวมันคือ ชื่อ อายุ และจำนวนเงินที่มี

การใช้งาน structure กับอาเรย์

โครงสร้างข้อมูลในภาษา C นั้นเป็นข้อมูลประเภทหนึ่ง ดังนั้นมันจึงสามารถทำงานกับอาเรย์ ต่อไปเป็นตัวอย่างในการใช้อาเรย์เพื่อเก็บโครงสร้างข้อมูลหลายตัวไว้ในอาเรย์

#include <stdio.h>

struct point {
int x;
int y;
};

int main() {

const int TOTAL_POINT = 4;

struct point p[TOTAL_POINT];
p[0].x = 1;
p[0].y = 2;
p[1].x = -3;
p[1].y = -5;
p[2].x = 4;
p[2].y = 8;
p[3].x = 0;
p[3].y = -1;

printf("There are %d steps for robot to walk.\n", TOTAL_POINT);

int i = 0;
for (i = 0; i < TOTAL_POINT; i++) {
printf("Step %d: walk to point %d, %d\n", i, p[i].x, p[i].y);
}

return 0;
}

ในตัวอย่ง เป็นโปรแกรมควบคุมการเดินของหุ่นยนต์ โดยเราได้สร้าง struct สำหรับเก็บตำแหน่งของหุ่นยนต์คือ x และ y และหลังจากนั้นเราสร้างอาเรย์ในการเก็บลำดับการเดินขิงหุ่นยนต์ โดยในค่าคงที่ TOTAL_POINT นั้นเป็นการเดินทั้งหมดของหุ่นยนต์

p[0].x = 1;
p[0].y = 2;
p[1].x = -3;
p[1].y = -5;
p[2].x = 4;
p[2].y = 8;
p[3].x = 0;
p[3].y = -1;

หลังจากนั้นเรากำหนดค่าให้กับตำแหน่งการเดินของหุ่นยนต์ทั้งหมด 4 ตำแหน่ง ซึ่งในการเข้าถึงค่าของ struct ในอาเรย์นั้นสามารถทำได้โดยเพิ่มวงเล็บ [] หลังชื่อของอาเรย์ของ struct เพื่อเข้าถึงตำแหน่งที่ต้องการ หลังจากนั้นเราใช้คำสั่ง For loop เพื่อแสดงผลลำดับการเดินของหุ่นยนต์ของเรา

There are 4 steps for robot to walk.
Step 0: walk to point 1, 2
Step 1: walk to point -3, -5
Step 2: walk to point 4, 8
Step 3: walk to point 0, -1

นี่เป็นผลลัพธ์การทำงานของโปรแกรม ซึ่งหุ่นยนต์จะเกินไปยังจุดต่างๆ ที่เราได้กำหนดไว้ในอาเรย์ของ struct ทั้ง 4 จุด คุณสามารถเพิ่มจุดการเดินได้ในตัวแปร TOTAL_POINT และเพิ่มจุดการเดินสำหรับทุกลำดับให้กับหุ่นยนต์

ในบทนี้ คุณได้เรียนรู้เกี่ยวเกี่ยวกับวิธีการสร้างและใช้งานโครงสร้างข้อมูลพื้นฐานในภาษา C และการใช้งาน struct กับพอยน์เตอร์และอาเรย์


บทความเกี่ยวกับ โครงสร้างข้อมูล

โครงสร้างข้อมูล ในภาษา C++

Data structure เป็นกลุ่มของตัวแปรที่สามารถรวมอยู่ในตัวแปรตัวเดียว เราเรียกว่า structure ตัวแปรที่อยู่ข้างในมันเรียกว่า members members สามารถมีประเภทแระขนาดต่า...

Structs ในภาษา C#

ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับโครงสร้างข้อมูลในภาษา C# โครงสร้างข้อมูล (Struct) เป็นตัวแปรที่ใช้สำหรับเก็บข้อมูลที่มีความเกี่ยวข้องกันในรูปแบบของออบเจ็ค Stru...

Structures ในภาษา Visual Basic

Structures หรือโครงสร้างข้อมูล คือประเภทข้อมูลประเภทหนึ่งในภาษา Visual Basic ที่สามารถมีสมาชิกภายในตัวของมันได้ ลักษณะโครงสร้างของ Structure นั้นจะคล้ายกับคลาส ...