โครงสร้างข้อมูลแบบเซ็ต
เป็นโครงสร้างข้อมูลที่ข้อมูลแต่ละตัวไม่มีความสัมพันธ์กันในภาษาซี
จะไม่มีประเภทข้อมูลแบบเซ็ตนี้เหมือนกับในภาษาปาสคาล
แต่สามารถใช้หลักการของการดำเนินงานแบบเช็ตมาใช้ได้
วิธีการแก้ปัญหาเบื้องต้น
- จะต้องกำหนดเซ็ตของผู้เรียนที่ลงทะเบียนเรียนในแต่ละวิชา
- นำเซ็ตดังกล่าวที่ได้มาทำการ intersection กัน หากมีเซ็ตใดที่
ทำการ intersect กันแล้ว มีข้อมูลสมาชิกในเซ็ตที่ซ้ำกันอยู่จะ
ไม่สามารถจัดให้วิชาดังกล่าวอยู่ในวันเวลาเดียวกันได้ตัวอย่างดังกล่าว
เป็นการนำแนวความคิดเรื่องการจัดการแบบเช็ตมาประยุกใช้
งานโครงสร้างข้อมูลแบบสตริงสตริง (String) หรือ สตริงของอักขระ
(CharacterString) เป็นข้อมูลที่ประกอบไปด้วยตัวอักษร
ตัวเลขหรือเครื่องหมายเรียงติดต่อกันไปรวมทั้งช่องว่างการประยุกต์ใช้คอมพิวเตอร์
ที่เกี่ยวกับข้อมูลที่เป็นสตริงมีการนำไปใช้สร้างโปรแกรมประเภทบรรณาธิการ
ข้อความ(text editor) หรือโปรแกรมประเภทประมวลผลคำ (wordprocessing)
ซึ่งมีการทำงานที่อำนวยความสะดวกหลายอย่างเช่น การตรวจสอบข้อความ
การจัดแนวข้อความในแต่ละย่อหน้า และการค้นหาคำ เป็นต้น
การกำหนดค่าคงตัวสตริงสามารถกำหนดได้ทั้งนอกและในฟังก์ชัน
เมื่อกำหนดไว้นอกฟังก์ชัน ชื่อค่าคงตัวจะเป็นพอยเตอร์ชี้ไปยังหน่วยความจำ
ที่เก็บสตริงนั้น เมื่อกำหนดไว้ในฟังก์ชัน จะเป็นพอยเตอร์ไปยังหน่วยความจำ
ที่เก็บตัวมันเองการกำหนดค่าให้กับสตริงนั้น เราจะใช้เครื่องหมาย doublequote (“ ”)
เช่น “abc” คือ ชุดของอักขระที่มีขนาด 4 (รวม \0 ด้วย)
ข้อสังเกต
string constant are different from character constant
#define NME “Semi”
main ( ){
char *cpntr;cpntr=NME;
printf(“con\n”);printf(“%s, %u, %c\n”, “con”, “duc”,*“tor”);
printf(““%s, %u, %c\n”, NME, NME,*NME);
printf(““%s, %u, %c\n”, cpntr, cpntr,*cpntr);
}
ผลการรันโปรแกรม
concon, 37,t
Semi, 16,s
Semi, 16, S
การกำหนดค่าคงตัวสตริงให้แก่ตัวแปรพอยต์เตอร์และอะเรย์สามารถกำหนด
ค่าคงตัวสตริงให้พอยเตอร์หรืออะเรย์ได้ในฐานะค่าเริ่มต้น
เช่น main ( ){
char ary[ ] = “This is the house. ”;
char *cpntr=“This is the door.”;
printf(“%s %s”,ary,cpntr);
ผลการรันโปรแกรมจะเห็นได้ว่าการใช้งานดูไม่แตกต่างกันแต่ aryเป็นตัวแปรอะเรย์
ค่าที่ให้จะต้องเป็นค่าข้อมูลในอะเรย์ส่วน cpntrเป็นพอยเตอร์ ค่าที่ให้นั้นไม่ใช่ค่าข้อมูล
แต่เป็นค่าแอดเดรสเริ่มต้นของสตริง(ค่าคงตัวสตริงเป็นทั้งข้อมูลสตริงและพอยเตอร์)
นอกจากนี้ยังสามารถเพิ่มลดค่าตัวแปรพอยเตอร์ได้ แต่สำหรับอะเรย์ทำไม่ได้
การกำหนดตัวแปรสตริงในการกำหนดตัวแปรของสตริงอาศัยหลักการของอะเรย์
เพราะ สตริงก็คืออะเรย์ของอักขระที่ปิดท้ายด้วยnull character (\0)
และมีฟังก์ชันพิเศษสำหรับทำงานกับสตริงโดยเฉพาะเช่นต้องการสตริงสำหรับเก็บชื่อบุคคลยาว
ไม่เกิน 30อักขระต้องกำหนดเป็นอะเรย์ขนาด 31 ช่อง เพื่อเก็บ null character อีก 1 ช่อง
main ( ) {
char name[31];
printf(“Hi, What’s your name?\n”);
gets(name);
printf(“Nice to meet you, %s\n”);
}
ผลการรันโปรแกรม
Hi, What’s your name?
Jame Smith
Nice to meet you, Jame Smith
การดำเนินการเกี่ยวกับสตริง
ในการดำเนินการเกี่ยวกับสตริง จะมีฟังก์ชันที่อยู่
ในแฟ้ม ข้อมูล stdio.h เก็บอยู่ใน C Library อยู่แล้ว
สามารถนำมาใช้ได้ โดยการใช้คำสั่ง #include ในการ
เรียกใช้ เช่น
- ฟังก์ชัน strlen(str) ใช้หาความยาวของสตริง
- ฟังก์ชัน strcpy (str1,str2) ใช้คัดลอกข้อมูล
จาก string หนึ่งไปยังอีก string หนึ่ง
- ฟังก์ชัน strcat(str1,str2) ใช้เชื่อมต่อข้อความ 2 ข้อความเข้าด้วยกัน
- ฟังก์ชัน strcmp(str1,str2 ) ใช้เปรียบเทียบ
ข้อความ 2 ข้อความว่ามีค่าเท่ากันหรือไม่ ถือหลักการ
เปรียบเทียบแบบพจนานุกรม เช่น abcda จะมีค่าน้อย
กว่า abcde และ abcdf จะมีค่ามากกว่า abcde ค่าที่
เท่ากัน คือ ค่าที่เหมือนกัน เช่น abcd กับ abcd สำหรับ
อักษรตัวเล็กตัวใหญ่ จะถือว่าอักษรตัวใหญ่มีค่าน้อยกว่า
อักษรตัวเล็ก ตามลำดับรหัส ASCII
วันพุธที่ 15 กรกฎาคม พ.ศ. 2552
วันอาทิตย์ที่ 5 กรกฎาคม พ.ศ. 2552
DTS03 5/072552
อะเรย์เป็นโครงสร้างข้อมูลที่เรียกว่า Linear List มีลักษณะคล้ายเซ็ตในคณิตศาสตร์ คือ อะเรย์จะประกอบด้วยสมาชิกที่มีจำนวนคงที่ มีรูปแบบข้อมูลเป็นแบบเดียวกัน สมาชิกแต่ละตัวใช้เนื้อที่จัดเก็บที่มีขนาดเท่ากัน เรียงต่อเนื่องในหน่วยความจำหลัก
อาร์เรย์ 1 มิติเป็นตัวแปรที่เก็บข้อมูลเพียงแถวเดียวหรือชั้นเดียวเช่นในการคำนวณหาสมาชิกของอาร์เรย์ 1 มิติทำได้ดังนี้จำนวนสมาชิกของอาร์เรย์ = (u-l)+1u คือค่าสูงสุด หรือ Upper boundl คือค่าต่ำสุด หรือ Lower bound ส่วน 2 มิติสามารถหาได้ดังนี้จำนวนสมาชิก = M x N
รูปแบบของการประกาศตัวแปรอาร์เรย์มิติเดียวtype array-name[n];type คือ ชนิดของตัวแปรอาร์เรย์ที่จะสร้างขึ้น เช่น int,float,char เป็นต้นarray-name คือ ชื่อของตัวแปรอาร์เรย์ที่ต้องตั้งให้สื่อและเข้ากับชนิดของตัวแปรและจะต้องไม่ไปตรงกับคำสงวนของภาษาซีด้วยn คือขนาดของตัวแปรอาร์เรย์ที่จะสร้างขึ้น
อาร์เรย์ 2 มิติมีลักษณะการกำหนดตำแหน่งแบบแถวและคอลัมน์รูปแบบของการประกาศตัวแปรอาร์เรย์ 2 มิติtype array-name[n][m];type คือ ชนิดของตัวแปรอาร์เรย์ที่จะสร้างขึ้น เช่น int,float,char เป็นต้นarray-name คือ ชื่อของตัวแปรอาร์เรย์ที่ต้องตั้งให้สื่อและเข้ากับชนิดของตัวแปรและจะต้องไม่ไปตรงกับคำสงวนของภาษาซีด้วยn คือ จำนวนแถวของตัวแปรอาร์เรย์m คือ จำนวนคอลัมน์ของตัวแปรอาร์เรย์เช่น int num[3][5];
Structure โครงสร้างข้อมูลหมายถึง การที่นำข้อมูลที่มีความเกี่ยวข้องกัน เช่น ข้อมูลของนักศึกษาที่อาจประกอบด้วยชื่อ,นามสกุล,อายุ,เพศ,ชั้นเรียน มารวมกันและจัดทำเป็นโครงสร้างข้อมูล
struct คือ คำที่ใช้กำหนดโครงสร้างข้อมูล(ต้องมีเสมอ)name คือ ชื่อของโครงสร้างข้อมูลที่จะสร้างขึ้นtype var-1,type var-2 คือชื่อตัวแปรในกลุ่มโครงสร้างข้อมูลstruct-variable คือชื่อของตัวแปรชนิดโครงสร้างที่ต้องการสร้างขึ้นจะมีลักษณะโครงสร้างภายในเหมือนกับโครงสร้างข้อมูลที่กำหนดตัวอย่าง struct student student1;
การอ้างถึงสมาชิกในตัวแปรชนิดโครงสร้าง
struct-name.variable-namestruct-name คือ ชื่อของตัวแปรชนิดโครงสร้าง (ไม่ใช่ชื่อโครงสร้าง). คือเครื่องหมายขั้นระหว่างชื่อตัวแปรชนิดโครงสร้างกับตัวแปรที่เป็นสมาชิก
variable-name คือชื่อของตัวแปรที่เป็นสมาชิกการกำหนดข้อมูลให้ตัวแปรชนิดโครงสร้างเราสามารถกำหนดได้เหมือนตัวแปรทั่วไปแต่ต้องอ้างอิงถึงสมาชิกให้ถูกต้อง เช่น student1.age = 15;student1.sex = 'M'; กรณีถ้าเป็นอาร์เรย์ของตัวแปรชนิดโครงสร้างสามารถเขียนได้ดังนี้ student1[0].age = 15;
อาร์เรย์ 1 มิติเป็นตัวแปรที่เก็บข้อมูลเพียงแถวเดียวหรือชั้นเดียวเช่นในการคำนวณหาสมาชิกของอาร์เรย์ 1 มิติทำได้ดังนี้จำนวนสมาชิกของอาร์เรย์ = (u-l)+1u คือค่าสูงสุด หรือ Upper boundl คือค่าต่ำสุด หรือ Lower bound ส่วน 2 มิติสามารถหาได้ดังนี้จำนวนสมาชิก = M x N
รูปแบบของการประกาศตัวแปรอาร์เรย์มิติเดียวtype array-name[n];type คือ ชนิดของตัวแปรอาร์เรย์ที่จะสร้างขึ้น เช่น int,float,char เป็นต้นarray-name คือ ชื่อของตัวแปรอาร์เรย์ที่ต้องตั้งให้สื่อและเข้ากับชนิดของตัวแปรและจะต้องไม่ไปตรงกับคำสงวนของภาษาซีด้วยn คือขนาดของตัวแปรอาร์เรย์ที่จะสร้างขึ้น
อาร์เรย์ 2 มิติมีลักษณะการกำหนดตำแหน่งแบบแถวและคอลัมน์รูปแบบของการประกาศตัวแปรอาร์เรย์ 2 มิติtype array-name[n][m];type คือ ชนิดของตัวแปรอาร์เรย์ที่จะสร้างขึ้น เช่น int,float,char เป็นต้นarray-name คือ ชื่อของตัวแปรอาร์เรย์ที่ต้องตั้งให้สื่อและเข้ากับชนิดของตัวแปรและจะต้องไม่ไปตรงกับคำสงวนของภาษาซีด้วยn คือ จำนวนแถวของตัวแปรอาร์เรย์m คือ จำนวนคอลัมน์ของตัวแปรอาร์เรย์เช่น int num[3][5];
Structure โครงสร้างข้อมูลหมายถึง การที่นำข้อมูลที่มีความเกี่ยวข้องกัน เช่น ข้อมูลของนักศึกษาที่อาจประกอบด้วยชื่อ,นามสกุล,อายุ,เพศ,ชั้นเรียน มารวมกันและจัดทำเป็นโครงสร้างข้อมูล
struct คือ คำที่ใช้กำหนดโครงสร้างข้อมูล(ต้องมีเสมอ)name คือ ชื่อของโครงสร้างข้อมูลที่จะสร้างขึ้นtype var-1,type var-2 คือชื่อตัวแปรในกลุ่มโครงสร้างข้อมูลstruct-variable คือชื่อของตัวแปรชนิดโครงสร้างที่ต้องการสร้างขึ้นจะมีลักษณะโครงสร้างภายในเหมือนกับโครงสร้างข้อมูลที่กำหนดตัวอย่าง struct student student1;
การอ้างถึงสมาชิกในตัวแปรชนิดโครงสร้าง
struct-name.variable-namestruct-name คือ ชื่อของตัวแปรชนิดโครงสร้าง (ไม่ใช่ชื่อโครงสร้าง). คือเครื่องหมายขั้นระหว่างชื่อตัวแปรชนิดโครงสร้างกับตัวแปรที่เป็นสมาชิก
variable-name คือชื่อของตัวแปรที่เป็นสมาชิกการกำหนดข้อมูลให้ตัวแปรชนิดโครงสร้างเราสามารถกำหนดได้เหมือนตัวแปรทั่วไปแต่ต้องอ้างอิงถึงสมาชิกให้ถูกต้อง เช่น student1.age = 15;student1.sex = 'M'; กรณีถ้าเป็นอาร์เรย์ของตัวแปรชนิดโครงสร้างสามารถเขียนได้ดังนี้ student1[0].age = 15;
วันศุกร์ที่ 3 กรกฎาคม พ.ศ. 2552
DTS01 16/06/2552
ปฐมนิเทศ
โครงสร้างข้อมูล (DATA STRUCTURE)
ผู้สอน : อาจารย์ปรมัตถ์ปัญปรัชญ์ ต้องประสงค์
E-mail : phorramatpanyaprat@hotmail.com
การเก็บคะแนน 100 แบ่งออกเป็น 60:40
- การนำเสนองานและมีส่วนร่วมในกิจกรรมเรียน 10
- จัดทำรายงาน/แบบฝึกหัด 30
- mid 20 - Final 40
*ความสำคัญของวิชาโครงสร้างข้อมูล
*โครงสร้างข้อมูล หมายถึง ความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้างนั้น ๆ เช่น การสร้างบ้าน ก็ต้องมีส่วนประกอบในการสร้าง ได้แก่ หิน ทราย ปูน เป็นต้น
ให้ไปสมัคร E-mail ของ gmail ก่อน โดยการตั้ง ชื่อ E-mail คือ u ตามด้วยรหัสประจำตัว
โครงสร้างข้อมูล (DATA STRUCTURE)
ผู้สอน : อาจารย์ปรมัตถ์ปัญปรัชญ์ ต้องประสงค์
E-mail : phorramatpanyaprat@hotmail.com
การเก็บคะแนน 100 แบ่งออกเป็น 60:40
- การนำเสนองานและมีส่วนร่วมในกิจกรรมเรียน 10
- จัดทำรายงาน/แบบฝึกหัด 30
- mid 20 - Final 40
*ความสำคัญของวิชาโครงสร้างข้อมูล
*โครงสร้างข้อมูล หมายถึง ความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้างนั้น ๆ เช่น การสร้างบ้าน ก็ต้องมีส่วนประกอบในการสร้าง ได้แก่ หิน ทราย ปูน เป็นต้น
ให้ไปสมัคร E-mail ของ gmail ก่อน โดยการตั้ง ชื่อ E-mail คือ u ตามด้วยรหัสประจำตัว
สมัครสมาชิก:
บทความ (Atom)