วันศุกร์ที่ 24 กรกฎาคม พ.ศ. 2552

Stack

DTS 05 25/07/2552
เรื่อง Stack
Stack สแตกคือโครงสร้างข้อมูลแบบลิเนียลลิสต์ ซึ่งความสามารถของมันคือการเพิ่มหรือลบข้อมูล
ในสแตก
ซึ่งการทำงานสแตกนั้นก้อจะประกอบไปด้วย
-Push คือการเอาข้อมูลที่ได้ใส่ลงไปในสแตก
-Pop คือการนำข้อมูลออกจากตัวส่วนบนของสแตก
ถ้าตัวสแตกนั้นไม่มีสมาชิกแล้วเกิดทำการPopสแตก จะทำให้เกิดความผิดพลาดหรือที่เรียกว่า
Stack Underflow
การดำเนินงานที่เกี่ยวข้องกับสแตก
-Create Stack
-Push Stack
-Pop Stack
-Stack Top
-Empty Stack
-Full Stack
-Stack Count
-Destroy Stack
DTS 04 -22/07/52
โครงสร้างข้อมูลแบบลิงค์ลิสต์
Linked List คือวิธีการเก็บข้อมูลแบบต่อเนื่องในอิลิเมนต์ต่างๆโดยมีPointerเป็นตัวเชื่อม
โดยตัวอิลิเมนต์นั้นเป็นสมาชิก แล้วโนด(Node)เป็นซับเซ็ตของยูเนี่ยนซึ่งในโนดจะมีตัว2ส่วนคือ
1.Data เป็นข้อในตัวอิลิเมนต์
2.Link Field จะเป็นตัวเก็บตำแหน่งของโนดในลิสต์
ซึ่งในลิงค์ลิสต์ จะมีตัวแปรไว้คอยชี้ตำแหน่งลิสต์ โนดแรกตัวแรกของลิสต์นั้น ถ้าในลิสต์ไม่มีข้อมูล
ข้อมูลในลิสต์ก้อจะเป็นNullทันที
กระบวนงานของลิงค์ลิสต์ประกอบด้วย
-Insert Node
-Delete Node
-Search List
-Traverse
-ReTrieve Node (การเรียกคืน)
-Empty List
-FullList
-List Count
-Destroy List

วันอังคารที่ 14 กรกฎาคม พ.ศ. 2552

DTS 03 01/07/2552
ในการเรียนเรื่อง structure
structure คือ สมาชิกของข้อมูลที่มีความแตกต่าง
ในทางด้านของข้อมูล
และpointer คือ ตัวแปรที่มีหน้าที่เก็บข้อมูลตำแหน่งที่อยู่หรือว่า(Address)
ที่ประกาศชนิดตัวแปรpointer
โครงสร้างข้อมูลแบบเซ็ตเป็นโครงสร้างข้อมูลที่ข้อมูลแต่ละตัวไม่มีความสัมพันธ์กันในภาษาซี จะไม่มีประเภทข้อมูลแบบเซ็ตนี้เหมือนกับในภาษาปาสคาลแต่สามารถใช้หลักการของการดำเนินงานแบบเซ็ตมาใช้ได้
แบบฝึกหัดบทที่2

1.ให้นักศึกษากำหนดค่าของ Array1มิติ และ 2มิติ
ตอบ char ch[5];
#include "stdio.h"
#include "conio.h"
main()
{
int a[3];
clrscr();
a[0] = 1;
a[1] = 5;
a[2] = 2;
printf("a[0] = %d\n",a[0]);
printf("a[1] = %d\n",a[1]);
printf("a[2] = %d\n",a[2]);
}
อะเรย์2
student[5][4]; #include "stdio.h"
#include "stdlib.h"
#include "conio.h"
main()
{
char student[4];
int num_student[5][4],i,j;
char fac[20];
clrscr();
for(i=0;i<=4;++i) { printf("Faculty : "); gets(fac); for(j=0;j<=3;++j) { printf("student[%d][%d] = ",i,j); gets(student); num_student[i][j] = atoi(student); } } }

2.ให้นักศึกษาหาค่าของ A[2],A[6]จากค่าA={2,8,16,24,9,7,3,8}
ตอบ #include"stdio.h"
main()
{
int a[]={2,8,16,24,9,7,3,8};
printf("%d\n",a[2]);
printf("%d\n",a[6]);
}

3.จากค่าของint a [2][3] = {{6,5,4},{3,2,1}};ให้นักศึกษาหาค่าของa[1][0]และa[0][2]
ตอบ#include"stdio.h"
main()
{
int a[2][3] = {{6,5,4},{3,2,1}};
printf("%d\n",a[1][0]);
printf("%d\n",a[0][2]);
}

4.ให้นักศึกษากำหนด Structure ที่มีค่าของข้อมูลจากน้อย 6 Records
ตอบ #include "stdio.h"
struct date
{
int day;
int month;
int year;
}
days;
struct mobile
{
char brand[20];
char modle[20];
char color[10];
int item;
float price;
}phone;
void main(){
printf("Welcome to Atomtelephone\n");
printf("day:");scanf("%d",&days.day );
printf("month:");
scanf("%d",&days.month);
printf("year:");
scanf("%d",&days.year);
printf("Mobile brand:");
scanf("%s",&phone.brand);
printf("Modle is:");
scanf("%s",&phone.modle);
printf("color:");
scanf("%s",&phone.color);
printf("item:");
scanf("%s",&phone.item);
printf("price :");
scanf("%f",&phone.price);
{
printf("Date:%d/%d/%d\n",days.day,days.month,days.year);
printf("Mobile brand: %s\n",phone.brand);
printf("Phone modle: %s\n",phone.modle);
printf("Color: %s\n",phone.color);
printf("Buy: %s Item",phone.item);
printf("Price: %f",phone.price);
}
}

5.ให้นักศึกษาบอกความแตกต่างของการกำหนดตัวชนิด ArrayกับตัวแปรPointerในสภาพของการกำหนดที่อยู่ของข้อมูล
ตอบ อาร์เรย์ (Array) คือ ชุดหรือกลุ่มของข้อมูลที่เก็บอยู่ที่เดียวกัน ภายใต้ชื่อตัวแปรหนึ่งๆ โดยทั่วไปเราอาจเรียกว่า ชุดข้อมูล ซึ่งหลักสำคัญ คือ ถ้าเป็นตัวแปรธรรมดา ตัวแปร 1 ตัวจะสามารถเก็บค่าได้หนึ่งค่า หากเป็นตัวแปรแบบ Array ตัวแปรหนึ่งตัวจะสามารถเก็บค่าได้มากกว่า 1 ค่า
แต่ในส่วนของพอยน์เตอร์ (pointer)พอยน์เตอร์เป็นตัวแปรที่ใช้เก็บตำแหน่งของข้อมูลเช่น ตัวแปรหรือสมาชิกของอะเรย์ เราใช้พอยเตอร์บ่อย ๆ ใน ภาษาซีเนื่องจากมันมีประโยชน์ มากมาย