29

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

  • Upload
    aure

  • View
    157

  • Download
    0

Embed Size (px)

DESCRIPTION

โครงสร้างข้อมูล. โครงสร้างข้อมูลอาร์เรย์. - PowerPoint PPT Presentation

Citation preview

Page 1: โครงสร้างข้อมูล
Page 2: โครงสร้างข้อมูล
Page 3: โครงสร้างข้อมูล

• อาร์�เร์ย์�เป็�นโคร์งสร์�างข้�อมู�ลแบบหน��งที่��ผู้��ใช้�ต้�องกำ�าหนดค!ณสมูบ#ต้$ข้�%นมูากำ&อน  โดย์ที่��อาร์�เร์ย์�ป็ร์ะกำอบด�วย์สมูาช้$กำจำ�านวนหน��งที่��เร์�ย์กำต้&อร์วมูกำ#นต้ามูล�าด#บที่��ถู�กำมูองเป็�นต้าร์าง สมูาช้$กำที่!กำต้#วจำะมู�ช้น$ดข้�อมู�ลที่��เป็�นแบบเด�ย์วกำ#น  ในกำาร์ใช้�อาร์�เร์ย์�เป็�นกำาร์เข้�าถู�งแบบส!&มู หร์-อโดย์ต้ร์ง เป็�นกำาร์อ�างไป็ย์#งแต้&ละสมูาช้$กำที่��ต้�องกำาร์ได�โดย์ต้ร์ง ซึ่��งมู�ต้#วช้�%ใช้�อ�างไป็ย์#งแต้&ละสมูาช้$กำเร์�ย์กำว&าด#ช้น� หร์-อ Subscript และต้�องเป็�นเลข้จำ�านวนเต้0มู กำาร์กำ�าหนดช้&วงหร์-อจำ�านวนข้องสมูาช้$กำจำะใช้�ข้อบเข้ต้ล&าง ซึ่��งมู�ค&าน�อย์ที่��ส!ด และข้อบเข้ต้บน ซึ่��งมู�ค&ามูากำที่��ส!ดอาร์�เร์ย์�เป็�นโคร์งสร์�างข้�อมู�ลที่��คงที่�� เป็ล��ย์นแป็ลงจำ�านวนสมูาช้$กำไมู&ได�ข้ณะที่�างาน และเน-�องจำากำข้�อมู�ลอาร์�เร์ย์�ถู�กำมูองเป็�นต้าร์างในกำาร์ใช้�งาน จำ�งมู�กำาร์กำ�าหนดล#กำษณะข้องอาร์�เร์ย์�ออกำเป็�นมู$ต้$ต้&าง ๆ

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

อาร์�เร์ย์�หนึ่งมิ ติ

• อาร์�เร์ย์�หน��งมู$ต้$ (One-dimension Array) มู�ล#กำษณะที่��ง&าย์ที่��ส!ดเป็�นต้าร์างที่��มู�เพี�ย์งแถูวเด�ย์ว บางคร์# %งกำ0เร์�ย์กำว&าเว0กำเต้อร์�

• อาร์�เร์ย์�หน��งมู$ต้$จำะมู�ด#ช้น�เพี�ย์งต้#วเด�ย์วใช้�อ�างไป็ย์#งต้�าแหน&งข้องแต้&ละสมูาช้$กำในอาร์�เร์ย์�ซึ่� �งมู�ค&าเป็�นล�าด#บ สมูาช้$กำแต้&ละต้#วจำะถู�กำแย์กำแย์ะต้#วช้- �ออาร์�เร์ย์�ต้ามูด�วย์ด#ช้น�ที่��อย์�&ในวงเล0บด#งในร์�ป็  ด#งน# %น เมู- �อต้�องกำาร์ใช้�อาร์�เร์ย์�กำ0เพี�ย์งแต้&กำ�าหนดช้- �อและใช้�ด#ช้น�อ�างไป็ย์#งแต้&ละสมูาช้$กำ กำาร์เข้�ย์นอ#ลกำอร์$ที่�มูจำ�งใช้�โคร์งสร์�างควบค!มูกำาร์ที่�างานแบบวนล�ป็เพี- �อใช้�ควบค!มูสมูาช้$กำแต้&ละต้#ว   

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

• ผู้ลล#พีธ์�ที่��ได�

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

อาร์�เร์ย์�สองมิ ติ  • อาร์�เร์ย์�สองมู$ต้$ (Tow-dimension Array) เป็�นอาร์�เร์ย์�ที่��สมูาช้$กำ

มู�โคร์งสร์�างข้�อมู�ลอาร์�เร์ย์� ล#กำษณะเป็�นต้าร์างที่��มู�ที่# %งแถูว และคอล#มูน� หร์-อเร์�ย์กำว&าแมูต้ที่ร์$กำ ด#งในร์�ป็ที่�� 2.1 เป็�นอาร์�เร์ย์�สองมู$ต้$ช้-�อ Matrix ที่��ป็ร์ะกำอบด�วย์สมูาช้$กำใย์แถูว M ต้#ว แต้&ละสมูาช้$กำจำะมู�สมูาช้$กำในคอล#มูน� N ต้#ว กำ0จำะได�เป็�นต้าร์างข้นาด M ต้&อ N

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

ติาร์างที่� 2.2 ติ�วอย์�างโปร์แกร์มิ Temp2.c จำากำโป็ร์แกำร์มูในต้าร์างที่�� 2.2 ผลล�พธ์�ที่�ได้! 

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

 กำาร์สร์�างอาร์�เร์ย์�สองมูอต้อมูาใช้�งานน$ย์มูใช้�กำ#บกำาร์วนล�ป็ที่��ซึ่�อนกำ#น 2 ล�ป็ ด#งน#%นส$�งที่��ควร์พี$จำาร์ณา ค-อ กำาร์ใช้�ล�ป็ควบค!มูสมูาช้$กำในแถูวกำ#บคอล#มูน�ควร์เป็�นอย์&างไร์ จำากำต้#วอย์&างกำาร์เกำ0บอ!ณหภู�มู$จำะเห0นว&าเวลาแต้&ละช้#�วโมูงเป็�นส&วนย์&อย์ในแต้&ละว#น แต้&ละว#นเป็�นส&วนย์&อย์ข้องส#ป็ดาห� กำาร์สร์�างอาร์�เร์ย์�จำ�งใช้�ส&วนหล#กำกำ�าหนดเป็�นแถูวค-อว#น ส&วนย์&อย์กำ�าหนดเป็�นคอล#มูน�ค-อช้#�วโมูง เมู-�อเข้�ย์นโป็ร์แกำร์มูกำ0จำะใช้�ล�ป็ข้�างนอกำเป็�นแถูว ส&วนล�ป็ข้�างในเป็�นคอล#มูน� ในกำร์ณ�ที่��เห0นว&าส&วนข้องแถูวและคอล#มูน�มู�ความูส�าค#ญเที่&ากำ#น อาจำมู�กำาร์เป็ล��ย์นสล#บต้�าแหน&ง โดย์กำาร์สล#บด#ช้น�ร์ะหว&างข้องแถูวและคอล#มูน�จำากำอาร์�เร์ย์� M ต้&อ N ไป็เป็�นอาร์�เร์ย์� N ต้&อ M

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

อาร์�เร์ย์�หลาย์มิ ติ

กำาร์สร์�างอาร์�เร์ย์�อาจำเป็�น สามูมู$ต้$ ส��มู$ต้$ หร์-อมูากำกำว&าน#%นเร์�ย์กำว&าอาร์�เร์ย์�หลาย์มู$ต้$หร์-อ N- มู$ต้$ ด#ช้น�และช้&วงจำ�านวนสมูาช้$กำกำ0จำะเพี$�มูมูากำข้�%นต้ามูจำ�านวนมู$ต้$ อาร์�เร์ย์� N-มู$ต้$จำะใช้�ค&าด#ช้น� N ต้#วอ�างไป็ย์#งต้�าแหน&งสมูาช้$กำแต้&ละต้#ว กำาร์กำ�าหนดอาร์�เร์ย์� N-มู$ต้$จำะเป็�นด#งน�%                M (L1:U1,L2:U2, …,Ln :Un) แต้&ละสมูาช้$กำข้องอาร์�เร์ย์�จำะถู�กำอ�างถู�งโดย์กำ�าหนดเป็�น M(I1,I2,…,In) ซึ่��งแต้&ละด#ช้น�ที่�� Ik ≤ Ik ≤ Uk ส�าหร์#บ k = 1,2,…,N จำ�านวนสมูาช้$กำที่#%งในอาร์�เร์ย์� M เที่&ากำ#บ                (U1 – L1 +1) * (U2 – L2 +1) * … * (Un – Ln +1)

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

• ติ�วอย์�างการ์อาร์�เร์ย์�หลาย์มิ ติ       ผลล�พธ์�ที่�ได้! 

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

• โคร์งสร์!างข้!อมิ$ลสติร์ ง            สต้ร์$งเป็�นโคร์งสร์�างข้�อมู�ลที่��เป็�นกำาร์ร์วบร์วมูโคร์งสร์�างข้�อมู�ลคาร์�แร์คเต้อร์� (Character) ซึ่��งเป็�นต้#วอ#กำษร์และส#ญล#กำษณ� (Symbol) ต้&าง ๆ  เป็�นช้น$ดข้�อมู�ลที่��ถู�กำใช้�งานมูากำช้น$ดหน��ง  ภูาษาเข้�ย์นโป็ร์แกำร์มูหลาย์ภูาษาจำะกำ�าหนดให�มูาใช้�งานได�ที่#นที่� เช้&น ภูาษาป็าสคาล แต้&บางภูาษาไมู&มู�มูาให� เช้&น ภูาษาซึ่� จำะต้�องสร์�างข้�%นมูาด�วย์ผู้��เข้�ย์นโป็ร์แกำร์มู โดย์น�าโคร์งสร์�างอาร์�เร์ย์�มูาใช้�และสมูาช้$กำที่!กำต้#วมู�โคร์งสร์�างข้�อมู�ลคาร์�แร์คเต้อร์�ได�ช้น$ดเด�ย์ว ด#งในร์�ป็เป็�นสต้ร์$งที่��มู�ต้#วอ#กำษร์ต้&อเป็�นข้�อความู

D a t a S t r u c t u r e s &

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

• การ์ก%าหนึ่ด้สติร์ ง                 ร์�ป็แบบกำาร์กำ�าหนดสต้ร์$งเป็�นกำาร์น�าเอาอ#กำษร์พีย์#ญช้นะ  (Alphabet) มูร์าร์วบร์วมู ด#งน�%

S = ‘a1a2 . . . aN’ โดย์ต้#วอ#กำษร์  a1 เป็�นสมูาช้$กำข้องอ#กำษร์พีย์#ญช้นะ และ 1

≤i≤N เป็�นกำาร์สร์�างสต้ร์$งช้-�อ  S ที่��มู�ความูย์าวเที่&ากำ#บ  N ต้#วอ#กำษร์ และกำาร์กำ�าหนดค&าให�แต้&ละสมูาช้$กำจำะเป็�นแบบเด�ย์วกำ#บกำาร์ใช้�ในอาร์�เร์ย์�   ที่�าให�กำาร์ใช้�งานไมู&สะดวกำเมู-�อต้�องใช้�งานบ&อย์  ๆ   จำ�งมู�กำาร์กำ�าหนดช้!ดป็ฏิ$บ#ต้$กำาร์พี-%นฐาน  (Operator) เพี-�อจำ#ดกำาร์กำ#บสต้ร์$ง           

• ความิย์าวสติร์ ง  (String Length) เป็�นกำาร์บอกำให�ที่ร์าบว&าสต้ร์$งต้#วน#%นมู�ต้#วอ#กำษร์หร์-อ  ความิย์าวเที่�าไร์  จะก%าหนึ่ด้เป(นึ่ฟั*งก�ชั�นึ่  Length ที่��ส&งค&าความูย์าวกำล#บมูาให�  ด#งน�%

N = Length (S) ;

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

ติ�วอย์�างการ์ใชั!สติร์ ง

• เป็�นต้#วอย์&างที่��จำะร์#บค&าป็�นข้�อความูเข้�ามูาจำากำค�ย์�บอร์�ดและน�าออกำแสดงผู้ลในร์�ป็แบบต้&าง  ๆ  โดย์ใช้�ฟั:งกำ�ช้#นที่��กำล&าวมูา  ที่��จำะจำ#ดกำาร์กำ#บข้�อความู

#include<stdio.h>#include<conio.h>int Length( char * s) { int i ; for( i = 0; s[i] ; i++ ); return i ;}void Concate( char* ds, char* ss ) { int i , j ; for( i = 0; ds[i]; i++ ); for( j = 0; ss[j]; j++ ) ds [i++] = ss[j];ds[i] = ‘\0’;}void SubStr( char* ds, char* ss, int pos, int len ) { int i = 0; pos - -; for( ; i < len; i++ ) ds[i] = ss[pos++]; ds[i] = ‘\0’;}main() { char FName [80]; char LName [80]; char s [80] = { “Hello, “ }; printf( “Enter your first name: “); scanf( “%s”, FName ); printf( “Enter your last name: “); scanf( “%s”, LName ); Concat( s, FName ); printf( “%s/n”, s ); printf( “Length of first name is: %d/n”, Length (FName) );printf( “Length of last name is: %d/n”, Length (LName) ); SubStr( s, FName, 3 , 5); printf( “Goodbye %s/n”, s ); getch();}

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

• โคร์งสร์!างข้!อมิ$ลเร์คคอร์�ด้  เร์คคอร์�ด  (Record) หร์-อร์ะเบ�ย์นเป็�นโคร์งสร์�างข้�อมู�ลที่��ผู้��ใช้�ต้�อง

กำ�าหนดค!ณสมูบ#ต้$ข้�%นมูากำ&อนเช้&นเด�ย์วกำ#บอาร์�เร์ย์�  แต้&แต้กำต้&างกำ#นที่��อาร์�เร์ย์�ป็ร์ะกำอบด�วย์สมูาช้$กำที่!กำต้#วมู�โคร์งสร์�างข้�อมู�ลช้น$ดเด�ย์วกำ#น  ส&วนเร์คคอร์�ดป็ร์ะกำอบด�วย์สมูาช้$กำแต้&ละต้#วที่��สามูาร์ถูมู�โคร์งสร์�างข้�อมู�ลช้น$ดใดกำ0ได�ไมู&จำ�าเป็�นต้�องเหมู-อนกำ#น  จำ�งเป็�นโคร์งร์�างข้�อมู�ลที่��ถู�กำใช้�งานบ&อย์มูากำเพี-�อเกำ0บข้�อมู�ลที่างธ์!ร์กำ$จำ  สมูาช้$กำในเร์คคอร์�ดเร์�ย์กำว&าเข้ต้ข้�อมู�ลหร์-อฟั;ลด�  (Field) และไมู&มู�กำาร์จำ#ดล�าด#บสมูาช้$กำเช้&นเด�ย์วกำ#บอาร์�เร์ย์�  ถู�กำเร์�ย์กำใช้�งานโดย์ใช้�ช้-�อข้องสมูาช้$กำต้#วน#%น  ส&วนอาร์�เร์ย์�ไมู&มู�ช้-�อจำะใช้�ด#ช้น�  โดย์พี-%นฐานเร์คคอร์�ดมู�ล#กำษณะเป็�นต้าร์างแถูวเด�ย์ว  ด#งในร์�ป็ที่��  3.2 เป็�นกำาร์เกำ0บค&าข้องแต้&ละเข้ต้ข้�อมู�ลที่��มู�โคร์งสร์�างข้�อมู�ลต้&างกำ#นป็ร์ะกำอบด�วย์  เลข้จำ�านวนเต้0มู  ข้�อความู  และเลข้ที่ศน$ย์มู

 110

211

Wilaiporn Chanrung 27

24/6 Sukumvit… 110

500.00

ต้#วอย์&างโคร์งสร์�างข้�อมู�ลเร์คคอร์�ดที่��แต้&ละเข้ต้ข้�อมู�ลมู�โคร์งสร์�างข้�อมู�ลต้&างกำ#น

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

• การ์ก%าหนึ่ด้เร์คคอร์�ด้               เร์คคอร์�ดมู�กำาร์กำ�าหนดร์�ป็แบบเป็�น  ด#งน�%

Rec (Field1, Field2, . . . , FieldN)     โดย์  Fieldi เป็�นสมูาช้$กำข้องเร์คคอร์�ด  และ  1≤ i ≤ N

เป็�นกำาร์สร์�างเร์คคอร์�ดช้-�อ  Rec ที่��มู�สมูาช้$กำ  N ต้#ว กำาร์ใช้�งานเร์คคอร์�ดเมู-�อต้�องกำาร์อ�างถู�งสมูาช้$กำจำะใช้�เคร์-�องหมูาย์มูห#พีภูาค  (จำ!ด) แสดงค!ณสมูบ#ต้$  (Qualification) ค#�นร์ะหว&างช้-�อเร์คคอร์�ดกำ#บช้-�อเข้ต้ข้�อมู�ลด#งน�%

Rec . Fieldi

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

ต้#วอย์&างโป็ร์แกำร์มู  Record1.c

• #include<stdio.h>#include<coio.h>#include<string.h>

struct Enployee { int ID; char Name[80]; char Phone[80]; float Salary;};

void printRecord( struct Employee e ) { printf( “ID-number Number Phone Salary\n” ); printf( “%-10d %-20s %-12s %-8.2f\n”, e.ID, e.Name, e.Phone, e.Salary );}

main() { struct Employee emp1; int id; char name[80]; char phone[80]; float salary;

printf( “Employee Records: \n” ); printf( “Enter ID-number: “ ); scanf( “%d” , &id ); emp1.ID = id; getchar();

printf( “Enter name: “); gets( name ); strcpy(emp1.Name,name); printf( “Enter phone: “); scanf( “%s”, phone ); strcpy( emp1.Phone,phone );

printf( “Enter salary: “); scanf( “%f”, &salary ); emp1.Salary = salary;

printf( “\nValue in record is\n” ); printRecord( emp1 );

getch();

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

• โคร์งสร์!างสแติก                 โคร์งสร์�างสแต้กำข้�อมู�ลที่��ร์� �จำ#กำและน�ามูาใช้�งานช้น$ดหน��งกำ0ค-อ สแต้กำ (Stack) มู�ล#กำษณะเป็�นร์าย์กำาร์ในแนวเช้$งเส�น (Linear List) ร์�ป็แบบหน��ง และมู�ข้�อกำ�าหนดให�ช้!ดป็ฏิ$บ#ต้$กำาร์ สามูาร์ถูเพี$�มูและลบร์าย์กำาร์เพี�ย์งด�านเด�ย์ว ซึ่��งเป็�นด�านบนส!ดข้องสแต้กำ (Top of Stack) เร์�ย์กำว&าต้#วช้�%สแต้กำ (Stack Pointer) มู�ร์�ป็แบบเป็�น (Top)(S)โดย์สแต้กำมู�กำาร์กำ�าหนดเป็�นร์�ป็แบบด#งน�%   S = [s1 ,S2, … ,ST]ด�านบนส!ดข้องสแต้กำจำะอย์�&ที่�� Top (S) =ST และมู�จำ�านวนสมูาช้$กำในสแต้กำเที่&ากำ#บ T ด#งในร์�ป็

ST…S2S1

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

สแต้กำถู�กำน�ามูาใช้�แกำ�ไข้ป็:ญหาต้&าง ๆ ด#งต้&อไป็น�%

•  เน-�องจำากำคอมูพี$วเต้อร์�ที่�างานในร์�ป็แบบข้องเลข้ฐาน 2 แต้&ในส&วนข้องผู้��ใช้�งานจำะเป็�นเลข้ฐาน 10 จำ�งต้�องแป็ลงค&าจำากำเลข้ฐาน 10 ไป็เป็�นเลข้ฐาน 2 เช้&น เป็ล��ย์นจำากำ 26 เป็�น 11010

• คอมูไพีเลอร์� (Compiler) จำะต้�องค�านวณน$พีจำน� (Expression) ที่างคณ$ต้ศาสต้ร์�ที่��มู�เคร์��องหมูาย์วงเล0บเป็;ดและป็;ดเข้�ามูาเกำ��ย์วข้�อง 

• โป็ร์แกำร์มูเกำมูเล&นไพี& (Card Game) จำะมู�ที่��วางกำองไพี&และกำาร์แจำกำไพี&ได�เฉพีาะใบที่��อย์�&บนส!ด

• ร์�ป็แบบป็:ญหากำาร์ที่�างานบางอย์&าง  เช้&น  กำาร์ที่�างานข้อง  Switching Box ข้องเคร์-อข้&าย์ หร์-อร์�ป็แบบกำาร์สล#บต้��ร์ถูไฟับนร์าง 

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

กำาร์ป็ฏิ$บ#ต้$กำาร์ข้องสแต้กำ

• CreateStack( ) ใช้�สร์�างสแต้กำใหมู&ข้�%นมูาใช้�งานและกำ�าหนดค&าเร์$�มูต้�นต้&าง ๆ• Push(value, stack) ใช้�เพี$�มูค&าใหมู&เกำ0บลงในสแต้กำที่��ใช้�งานอย์�&  มู�อ#ลกำอร์$ที่�มูกำาร์ที่�างาน

ติ�วอย์�าง อ�ลกอร์ ที่มิการ์เพ มิค�าใหมิ�เก-บลงในึ่สแติก

1. ต้ร์วจำสอบสแต้กำว&าจำะมู�สมูาช้$กำอย์�&เต้0มูหร์-อไมู&  โดย์เป็ร์�ย์บเที่�ย์บค&า Top กำ#บข้นาดอาร์�เร์ย์� 2. ถู�าสแต้กำไมู&เต้0มู             2.1 เพี$�มูค&าให�กำ#บ Top โดย์กำาร์บวกำ 1 2.2 ที่�ากำาร์น�าค&าที่��ได�มูาเกำ0บลงในสแต้กำในต้�าแหน&ง Top ไมู&เช้&นน#%นแจำ�งกำล#บมูาว&าสแต้กำเต้0มู 3. Pop(stack) ใช้�ด�งค&าออกำจำากำสแต้กำที่��ใช้�งานอย์�&และส&งค&า value กำล#บมูาให� มู�อ#ลกำอร์$ที่�มูกำาร์   ที่�างานเป็�นด#งในต้าร์างต้&อไป็

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

อ#ลกำอร์$ที่�มูด�งค&าออกำจำากำสแต้กำ

1.ต้ร์วจำสอบว&าสแต้กำว&างหร์-อไมู& โดย์เป็ร์�ย์บเที่�ย์บค&า Top กำ#บข้นาดอาร์�เร์ย์�

2.ถู�าสแต้กำไมู&ว&าง– ที่�ากำาร์ด�งค&าในต้�าแหน&ง  Top ออกำมูาให�– ลดค&าข้อง Top โดย์กำาร์ลบ 1 ไมู&เช้&นน#%นแจำ�งกำล#บมูาว&าสแต้กำว&าง

3. isEmpty(stack) ใช้�ต้ร์วจำสอบว&าสแต้กำที่��ใช้�งานอย์�&ว&างหร์-อไมู&  ถู�าไมู&มู�ค&าเกำ0บไว�เลย์จำะส&งค&าจำร์$งกำล#บให�

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

• เมู-�อน�าสแต้กำมูาใช้�งานต้ามูล�าด#บด#งในร์�ป็ (a) ถู�ง (g) มู�กำาร์ที่�างานโดย์ใช้�ช้!ดป็ฏิ$บ#ต้$กำาร์ Push และ Pop ด#งน�%

• เร์$�มูต้�นสร์�างสแต้กำ  S ข้�%นมูาที่�างานจำะได�เป็�นสแต้กำว&าง  ไมู&มู�สมูาช้$กำโดย์ต้#วช้�%สแต้กำ Top ย์#งไมู&มู�ค&า

• • น�าค&า  A เข้�ามูาเกำ0บเป็�นต้#วแร์กำโดย์ใช้�  Push(A) สแต้กำ S = [A] ต้#วช้�%สแต้กำ Top = A• • น�าค&า  B เกำ0บต้&อโดย์ใช้� Push(B) สแต้กำ S = [A,B] ต้#วช้�%สแต้กำ Top = B• • (d)น�าค&า C เกำ0บต้&อโดย์ใช้� Push(C) สแต้กำ S = [A,B,C]ต้#วช้�%สแต้กำ Top =C• • ต้�องกำาร์ด�งค&าออกำมูาโดย์ใช้� Pop( ) สแต้กำ S = [A,B] ต้#วช้�%สแต้กำTop = B• • (f) น�าค&า D, E เกำ0บต้&อโดย์ใช้� Push(D) และ Push(E) ต้ามูล�าด#บ สแต้กำ 

     S = [A,B,D,E] ต้#วช้�%สแต้กำ Top = E• (g) ด�งค&าออกำมูา 3 ค&าโดย์ใช้� Pop( ) 3 คร์#%งและเกำ0บค&า F โดย์ใช้� Push(F) สแต้กำ S = [A,F]

ต้#วช้�%สแต้กำ Top = F•           จำะเห0นว&ากำาร์ที่�างานข้องสแต้กำเมู-�อมู�ค&าใดส&งเข้�ามูาเกำ0บเป็�นต้#วส!ดที่�าย์กำ0จำะอย์�&บน

ส!ด  ค&าที่��ใส&ลงมูากำ&อนหน�าน�%กำ0จำะถู�กำซึ่�อนที่#บต้ามูล�าด#บ  หากำมู�กำาร์ด�งค&าออกำมูาใช้�ค&าที่��อย์�&บนส!ดจำะถู�กำด�งออกำมูากำ&อน  ล#กำษณะที่��ได�จำ�งเป็�นกำาร์กำล#บกำ#นข้องล�าด#บกำาร์ใช้�งานและเร์�ย์กำว&าเข้�าที่�หล#งออกำกำ&อน

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

• ค$ว (Queue) เป็�นโคร์งสร์�างข้�อมู�ลที่��ร์� �จำ#กำและน�ามูาใช้�งานมูากำเช้&นเด�ย์วกำ#บสแต้กำ (Stack) และมู�ล#กำษณะเป็�นร์าย์กำาร์ในแนวเช้$งเส�น (Linear List) เช้&นกำ#น มู�ข้�อกำ�าหนดให�ช้!ดป็ฏิ$บ#ต้$กำาร์สามูาร์ถูเพี$�มูค&าเข้�าไป็ในต้อนที่�าย์ข้องร์าย์กำาร์เพี�ย์งด�านเด�ย์ว เร์�ย์กำว&า ส&วนหล#ง (Rear) และลบค&าในต้อนต้�นข้องร์าย์กำาร์เพี�ย์งด�านเด�ย์ว เร์�ย์กำว&าส&วนหน�า (Front) ซึ่��งกำ�าหนดค$วเป็�นร์�ป็แบบด#งน�%     Q = [Q1, Q2, . . . , QT] โดย์ Front (Q) ค-อ Q1 และ Rear (Q) ค-อ QT มู�จำ�านานสมูาช้$กำในค$วเที่&ากำ#บ T ด#งในร์�ป็ที่�� 5.1 โดย์ล#กำษณะมู�ต้#วช้�%ส&วนหน�าอย์�&ด�านซึ่�าย์และต้#วช้�%ด�านที่�าย์อย์�&ด�านข้วา และอาจำกำล#บด�านกำ#นกำ0ได�ให�ต้#วช้�%ส&วนหน�าอย์�&ด�านข้วาและต้#วช้�%ส&วนที่�าย์อย์�&ด�านซึ่�าย์ 

Front

Rear

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

•  ล#กำษณะข้องค$วถู�กำน�ามูาใช้�แกำ�ไข้ป็:ญหาต้&างๆในแอป็พีล$เคช้#�นต้&างๆ เช้&น จำ�าลอง (Simulation) กำาร์ที่�างานข้องร์ะบบจำร์$งในกำ$จำกำร์ร์มูแบบเข้�ากำ&อนออกำกำ&อน เช้&น กำาร์เข้�าแถูวเพี-�อนซึ่-%อข้องหร์-อช้�าร์ะเง$นเพี-�อต้ร์วจำสอบกำาร์ให�บร์$กำาร์เพี�ย์งพีอหร์-อไมู& กำาร์น�าค$วไป็ใช้�ในกำาร์ส�าร์วจำพี$จำาร์ณา (Observation) ต้ามูป็ร์$มูาณร์ถูต้$ดเพี-�อควบค!มูไฟัจำร์าจำร์ต้ามูที่างแย์กำ กำาร์น�าหล#กำกำาร์ข้องค$ว (Queuing Theory) มูาใช้� เช้&น กำาร์ส&งข้�อมู�ลข้&าวสาร์ในเคร์-อข้&าย์ กำาร์ส&งแฟั>มูข้�อมู�ลไป็ย์#งพีร์$%นเต้อร์�เพี-�อพี$มูพี�งานต้ามูล�าด#บค$ว หร์-อร์�ป็แบบกำาร์สล#บต้��ร์ถูไฟับนร์าง ด#งร์�ป็

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

ต้#วอย์&างกำาร์ใช้�ค$วแกำ�ป็:ญหากำาร์สล#บต้��ร์ถูไฟับนร์าง

• ป็:ญหาต้&างๆเหล&าน�%สามูาร์ถูแกำ�ไข้โดย์ใช้�โคร์งสร์�างค$วที่��มู�ล#กำษณะกำาร์ที่�างานในร์�ป็แบบที่��เร์�ย์กำว&าเข้�ากำ&อนออกำกำ&อน (First-In-First-Out, FIFO) หร์-อเข้�ามูากำ&อนได�บร์$กำาร์กำ&อน (First-Come-First-Served, FCFS) เมู-�อค&าใหมู&เข้�ามูากำ0จำะไป็ต้&อเป็�นส&วนที่�าย์แที่นค&าเด$มูที่��เกำ0บอย์�&ส&วนที่�าย์กำ&อนหน�าน�%ไป็เร์-�อย์ๆ ถู�าเป็�นกำาร์ด�งค&าออกำจำากำค$วกำ0จำะน�าค&าแร์กำส!ดที่��อย์�&ในค$วด�งออกำมูาให�กำ&อนสมูาช้$กำต้#วถู#ดไป็ส&วนหน�าแที่น กำาร์ป็ฏิ$บ#ต้$กำาร์ข้องค$ว                 จำากำล#กำษณะข้องค$วจำะมู�กำาร์ป็ฏิ$บ#ต้$กำาร์เข้�ามูาช้&วย์กำาร์ที่�างานและจำ#ดกำาร์กำ#บค$วให�มู�ความูถู�กำต้�อง โดย์มู�ช้!ดป็ฏิ$บ#ต้$กำาร์พี-%นฐาน ด#งต้&อไป็น�%                 1.CreateQueue () ใช้�สร์�างค$วใหมู&ข้�%นมูาใช้�งานและกำ�าหนดค&าเร์$�มูต้�นต้&างๆ                 2.Insert (value, queue) ใช้�เพี$�มูค&าใหมู&เกำ0บลงในค$วที่��ใช้�งานอย์�& และข้ย์#บต้�าแหน&งใหมู&ให�กำ#บส&วนที่�าย์                 3.Remove (queue) ใช้�ด�งค&าออกำจำากำค$วที่��ใช้�งานอย์�&และส&งค&า value กำล#บมูาให�และข้ย์#บไป็ย์#งต้�าแหน&งถู#ดไป็ให�เป็�นส&วนหน�า                 4. isEmpty(stack) ใช้�ต้ร์วจำสอบว&าค$วที่��ใช้�งานอย์�&ว&างหร์-อไมู& ถู�าไมู&มู�ค&าเกำ0บไว�เลย์จำะส&งค&าจำร์$งกำล#บมูาให�                 กำาร์น�าค$วมูาใช้�งานเป็�นไป็ต้ามูล�าด#บด#งในร์�ป็ (a) ถู�ง (g) มู�กำาร์ที่�างานโดย์ใช้�ช้!ดป็ฏิ$บ#ต้$กำาร์ด#งน�% (a) เร์$�มูต้�นสร์�างค$ว Qข้�%นมูาที่�างาน Create Queue (Q) ได�เป็�นค$วว&างไมู&มู�สมูาช้$กำโดย์ต้#วช้�%ส&วนหน�าและส&วนที่�าย์ย์#งไมู&มู�ค&า 

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

กำาร์ที่�างานข้องค$วเมู-�อมู�ค&าใดส&งเข้�ามูาเกำ0บเป็�นต้#วแร์กำกำ0จำะอย์�&ส&วนหน�า ค&าถู#ดมูากำ0จำะต้&อที่�าย์ไป็เร์-�อย์ๆ จำนต้#วส!ดที่�าย์ค-อส&วนหล#ง หากำมู�กำาร์ด�งค&าออกำมูาใช้� ค&าที่��อย์�&ส&วนหน�าจำะถู�กำด�งออกำมูากำ&อน ล#กำษณะที่��ได�จำ�งเป็�นล�าด#บกำาร์ใช้�งานที่#�วไป็และเร์�ย์กำว&าเข้�ากำ&อนออกำกำ&อน             

ในกำาร์สร์�างค$วมูาใช้�งานโดย์พี-%นฐานจำะใช้�อาร์�เร์ย์�เกำ0บค&าสมูาช้$กำ มู�ต้#วแป็ร์ Front และ Rear เป็�นต้#วช้�%ต้�าแหน&งส&วนหน�าและส&วนที่�าย์ค$ว จำ�งเกำ$ดความูล�าบากำเมู-�อกำาร์เกำ0บค&าเข้�ามูาจำนถู�งสมูาช้$กำต้#วส!ดที่�าย์ข้องอาร์�เร์ย์� ที่�าให�เพี$�มูค&าใหมู&เข้�ามูาอ�กำไมู&ได� ถู�าหากำมู�กำาร์เพี$�มูเข้�ามูาอ�กำจำะเกำ$ดล#กำษณะกำาร์ล�นข้องข้�อมู�ลในค$ว (Queue Overflow) และเมู-�อใดมู�กำาร์ด�งค&าในส&วนหน�าออกำมูากำ0ที่�าให�พี-%นที่��ส&วนหน�าข้องอาร์�เร์ย์�เกำ$ดว&างและใช้�งานไมู&ได� ที่�าให�ต้�องป็ร์#บป็ร์!งโดย์ย์�าย์ค&าที่��มู�อย์�&ส&วนที่�าย์กำล#บไป็ไว�ส&วนหน�าข้องอาร์�เร์ย์�เพี-�อน�าพี-%นที่��ว&างกำล#บมูาใช้�งานได� แต้&เป็�นค&าใช้�จำ&าย์ที่��ต้�องที่�างานเพี$�มูโดย์เฉพีาะค$วที่��มู�ข้นาดใหญ& ด#งในร์�ป็ที่�� 5.3 เป็�นต้#วอย์&างค$วที่��ใช้�อาร์�เร์ย์�ข้นาดเที่&ากำ#บ 5 โดย์เพี$�มูค&า Insert(70),Insert(80) และ Insert(50) ต้ามูล�าด#บในร์�ป็ (a) จำากำน#%นด�งออกำมูา 2 ค&าโดย์ใช้� Remove() 2 คร์#%งได�เป็�นร์�ป็ (b) และเพี$�มูค&า Insert(90) Insert(60) ในร์�ป็ (c) เน-�องจำากำไมู&สามูาร์ถูเพี$�มูค&าใหมู&ได�อ�กำจำ�งต้�องข้ย์#บค&าที่��เกำ0บอย์�&ไป็ที่างซึ่�าย์ในร์�ป็ (d) พีร์�อมูกำ#บกำ�าหนดค&าต้�าแหน&งใหมู&ให�กำ#บ ต้#วแป็ร์ Front และ Rear

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

• ว$ธ์�แกำ�ป็:ญหาในกำาร์ย์�าย์ข้�อมู�ลที่��พีบในกำาร์จำ#ดเกำ0บที่��มู�ร์�ป็แบบเร์�ย์งต้ามูล�าด#บ(Sequential)เป็ล��ย์นมูาใช้�ร์�ป็แบบไมู&เร์�ย์งต้ามูล�าด#บ (Non-sequential)ซึ่��งร์�ป็แบบกำาร์เร์�ย์งต้ามูล�าด#บจำะมู�สมูาช้$กำเร์�ย์งต้&อเน-�องต้$ดกำ#นในที่างต้ร์ร์กำะ (Logical) และที่างกำาย์ภูาพี(Physical) เป็�นแบบเด�ย์วกำ#น แต้&ร์�ป็แบบไมู&เร์�ย์งต้ามูล�าด#บสมูาช้$กำต้&อเน-�องต้$ดกำ#นในที่างต้ร์ร์กำะ ส&วนที่างกำาย์ภูาพีไมู&จำ�าเป็�นต้�องเหมู-อนกำ#น โดย์ในที่างต้ร์ร์กำะจำะแสดงด�วย์แต้&ละสมูาช้$กำมู�กำาร์ช้�% (Point) ต้�อไป็ย์#งสมูาช้$กำต้#วถู#ดไป็ สมูาช้$กำที่!กำต้#วในร์าย์กำาร์จำ�งถู�กำเช้-�อมูต้&อ (Link) เข้�าด�วย์กำ#น ด#งร์�ป็ เป็�นร์าย์กำาร์เช้-�อมูต้&อหร์-อเร์�ย์กำว&าล$%งค�ล$สต้� (Linked List) มู�สมูาช้$กำ N ต้#ว แต้&ละสมูาช้$กำเร์�ย์กำว&าโหนด (Node)

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

• โคร์งสร์!างข้!อมิ$ลเร์คคอร์�ด้ ปร์ะกอบด้!วย์สองส�วนึ่ ค/อ          1.ส�วนึ่เก-บข้!อมิ$ล (Info) ใช้�เกำ0บข้�อมู�ลข้&าวสาร์ที่��มู�โคร์งสร์�างข้�อมู�ลเบ-%องต้�นหร์-อเร์�ย์บง&าย์           2.ส�วนึ่การ์เชั/อมิติ�อ (Next) เป็�นต้#วช้�%หร์-อพีอย์น�เต้อร์�เกำ0บค&าแอดเดร์ส

 ส�าหร์#บในที่างกำาย์ภูาพีข้องล$%งค�ล$สต้� แต้&ละดหนดไมู&จำ�าเป็�นต้�องอย์�&ต้$ดกำ#น อาจำกำร์ะจำ#ดกำร์ะจำาย์ไป็ย์�&ส&วนไหนกำ0ได�ในหน&วย์ความูจำ�าโดย์มู�ต้#วเช้-�อมูช้�%ไป็ย์#งต้#วต้�าแหน&งข้องโหนดถู#ดไป็        ด#งที่��กำล&าวในต้อนต้�นโคร์งสร์�างสแต้กำและค$วมู�กำาร์ใช้�อาร์�เร์ย์�ในกำาร์เกำ0บค&า สมูาช้$กำที่!กำต้#วจำ�งถู�กำจำ�ากำ#ดให�เป็�นช้น$ดเด�ย์วกำ#น(Homogenous) ซึ่��งแกำ�ไข้โดย์เป็ล��ย์นมูาใช้�ล$%งค�ล$สต้�ที่��มู�โคร์งสร์�างข้�อมู�ลต้&างกำ#นได� นอกำจำากำน�%ย์#งมู�ผู้ลด�ในกำาร์ป็ฏิ$บ#ต้$กำาร์แที่ร์กำข้�อมู�ลหร์-อลบข้�อมู�ล เพี�ย์งแต้&ย์�าย์กำาร์ช้�%ข้องต้#วแป็ร์พีอย์น�เต้อร์�เที่&าน#%น ที่�าให�สมูาช้$กำอ-�นไมู&มู�ผู้ลกำร์ะที่บ แต้&ในกำร์ณ�ค&าใช้�จำ&าย์แล�วล$งค�ล$สต้�จำะส�งกำว&าที่��ต้�องใช้�พี-%นที่��เผู้$�มูมูากำข้�%นส�าหร์#บส&วนกำาร์เช้-�อมูต้&อเพี-�อช้�%ไป็ย์#งโหนดถู#ดไป็ และกำาร์ค�นหาโหนดที่��ต้�องกำาร์ใช้�เวลามูากำเน-�องจำากำเป็�นกำาร์ค�นหาเร์�ย์งต้ามูล�าด#บ (Sequential Search) ได�โหนดเด�ย์วโดย์เร์$�มูต้�นที่��โหนดแร์กำเสมูอใช้�อ�างไป็ย์#งโหนดถู#ดไป็ในหน&วย์ความูจำ�า 

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

การ์ปฏิ บ�ติ การ์พ/1นึ่ฐานึ่ข้องล งค�ล สติ� 

         ส$�งส�าค#ญอย์&างหน��งในกำาร์ใช้�โคร์งสร์�างข้�อมู�ลล$งค�ล$สต้� ค-อ ต้#วแป็ร์พีอย์น�เต้อร์� (Pointer Variable) ซึ่��งเกำ0บค&าเป็�นต้�าแหน&งแอดเดร์สในหน&วย์ความูจำ�า (Memory Address) ในกำาร์ป็ฏิ$บ#ต้$กำาร์กำ#บล$%งค�ล$สต้�และให�มู�ความูถู�กำต้�องจำะใช้�ต้#วแป็ร์พีอย์น�เต้อร์�ในกำาร์จำ#ดกำาร์เร์-�องต้&อไป็น�%1.ใช้�ที่ดสอบกำ#บค&า NULL2.ใช้�ที่ดสอบว&ามู�ค&าเที่&ากำ#บต้#วแป็ร์พีอย์น�เต้อร์�อ-�น 3.กำ�าหนดให�มู�ค&าเป็�น NULL4.กำ�าหนดให�ช้�%ไป็ย์#งโหนด                 ช้!ดป็ฏิ$บ#ต้$กำาร์ข้องล$%งค�ล$สต้�ที่��ที่กำวานร์&วมูกำ#บต้#วแป็ร์พีอย์น�เต้อร์� มู�ด#งน�% 1.Node(P) ส&งโหนดที่��ถู�กำช้�%ด�วย์ต้�วแป็ร์พีอย์น�เต้อร์� P กำล#บมูาให�2.INFO(P) ส&งค&าในส&วนเกำ0บข้�อมู�ลข้องโหนดที่��ถู�กำช้�%ด�วย์ต้#วแป็ร์พีอย์น�เต้อร์� P กำล#บมูาให�3.Next(P) ส&งพีอย์น�เต้อร์�ในส&วนกำาร์เช้-�อมูต้&อข้ย์องโหนดที่��ถู�กำช้�%ด�วย์ต้#วแป็ร์พีอย์น�เต้อร์� P กำล#บมูาให�  

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

• 1.นึ่างสาวส3ภานึ่� ลอย์ร์�อนึ่ เลข้ที่� 19 มิ.6/2

• 2.นึ่างสาวจ�นึ่ที่ ร์า ภ$มิ ลาด้ เลข้ที่� 29 มิ.6/2