28 กรกฎาคม 2552

สรุป 05

Stack เป็นโครงสร้างข้อมูลที่ข้อมูลแบบลิเนียร์ลิสต์ ที่มีคุณสมบัติที่ว่า การเพิ่มหรือลบข้อมูลในสแตก จะกระทำที่ ปลายข้างเดียวกัน ซึ่งเรียกว่า Top ของสแตก (TopOf Stack) และ ลักษณะที่สำคัญของสแตกคือ ข้อมูลที่ใส่หลังสุดจะถูกนำออกมา จากสแตกเป็นลำดับแรกสุด เรียกคุณสมบัตินี้ว่าLIFO (Last In First Out)การทำงานของสแตกจะประกอบด้วยกระบวนการ 3 กระบวนการที่สำคัญ คือ
1.Push คือ การนำข้อมูลใส่ลงไปในสแตก โดยการเพิ่มข้อมูลลงในสแตก จะต้องทำการตรวจสอบว่าสแตก เต็มหรือไม่ ถ้าไม่เต็มก็สามารถเพิ่มข้อมูลลงไปในสแตกได้ แล้วปรับตัวชี้ตำแหน่งให้ไปชี้ที่ตำแหน่งข้อมูลใหม่ ถ้าสแตกเต็ม (Stack Overflow) ก็จะไม่สามารถเพิ่มข้อมูลเข้าไปในสแตกได้อีก
2. Pop คือ การนำข้อมูลออกจากส่วนบนสุดของสแตก โดยการนำข้อมูลออกจากสแตก ถ้าสแตกมีสมาชิก เพียง 1ตัว แล้วนำสมาชิกออกจากสแตก จะเกิดสภาวะสแตกว่าง (Stack Empty)
3. Stack Top เป็นการคัดลอกข้อมูลที่อยู่บนสุดของสแตก แต่ไม่ได้นำเอาข้อมูลนั้นออกจากสแตกการแทนที่ข้อมูลของสแตกสามารถทำได้ 2 วิธี คือ
1> การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสต์ ประกอบไปด้วย2 ส่วน คือ
2> การแทนที่ข้อมูลของสแตกแบบอะเรย์

DTS-05 22/07/52

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

21 กรกฎาคม 2552

สรุป 04

วันนี้เป็นการเรียนเรื่อง Linked Listโครงสร้างข้อมูล Linked List เป็นวิธีแก้ปัญหา ข้อมูลที่พบในการจัดเก็บที่มีรูปแบบ เรียงตามลำดับ (Sequential) เปลี่ยนมาใช้รูปแบบใหม่แบบไม่เรียงลำดับ (Non-Sequential) ซึ่งรูปแบบในการเก็บข้อมูลนั้นสมาชิกจะต้องเรียงต่อเนื่องกันติดๆกันในทางตรรกะ (Logical) และทางกายภาพ (Physical)เป็นแบบเดียวกันแต่ รูปแบบไม่เรียงตามลำดับ สมาชิกจะเรียงต่อเนื่องกันในส่วนของ ตรรกะ ส่วนทางกายภาพไม่จำเป็นต้องเหมือนกันสามารถนำความรู้ที่ได้ศึกษาการสร้างลิงค์ลิสต์มาประยุกต์ใช้ในการเขียนโปรแกรมได้และยังสามารถสร้างโครงสร้างข้อมูลลิงค์ลิสต์แบบซับซ้อนได้

DTS-04 15/07/52

Stdio.h
#include
main()
{
int no;
float hour,rate,income,net_income,tax;
char name[20];
printf("Computer employee's income \n");
printf("\nCode Number = ");
scanf("%d",&no);
printf("Name = ");
scanf("%s",&name);
printf("Hour = ");
scanf("%f",&hour);
printf("Rate = ");
scanf("%f",&rate);
income = hour * rate ;
tax = income * 0.10;
net_income = income - tax ;
printf("\n\n Income = %f ",income);
printf("\n tax = %f ",tax);
printf("\n Net_Income = %f ",net_income);
}

Iostream.h
#include
main()
{
int no;
float hour,rate,income,net_income,tax;
char name[20];
cout<<"Computer employee 's income"; cout<<"\nCode Number = "; cin>>no;
cout<<"Name = "; cin>>name;
cout<<"Hour = "; cin>>hour;
cout<<"Rate = "; cin>>rate;
income = hour * rate ;
tax = income * 0.10;
net_income = income - tax ;
cout<<"\n\n Income = "<< income;
cout<<"\n tax = "<< tax;
cout<<"\n Net_Income = "<< net_income;
}

14 กรกฎาคม 2552

สรุป 03

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

DTS-03 01/07/52

1. ให้นักศึกษากำหนดค่าของ Array 1 มิติ และ Array 2 มิติ
ตอบ
#include"stdio.h"
int main(void)
{
char name[10]={'P','A','T','C','H','A','N','O','N','\0'};
char name1[3][3]={"PAT","CHA","NON"};
printf("Array 1\n");
printf("%c%c%c%c%c%c%c%c%c\n",name[0],name[1],name[2],name[3],name[4],name[5],name[6],name[7],name[8]);
printf("\nArray 2\n");
printf("%c%c%c%c%c%c%c%c%c\n",name1[0][0],name1[0][1],name1[0][2],name1[1][0],name1[1][1],name1[1][2],name1[2][0],name1[2][1],name1[2][2]);
}
2. ให้นักศึกษาหาค่าของ A[2],A[6]จากค่า A={2,8,16,24,9,7,3,8}
ตอบ
A[2] = 16
A[6] = 3
3. จากค่าของ int a[2][3]={{6,5,4},{3,2,1}}; ให้นักศึกษาหาค่าของ a[1][0] และ a[0][2]
ตอบ
a[1][0] = 3
a[0][2] = 4
4. ให้นักศึกษากำหนด structure ที่มีค่าของข้อมูลอย่างน้อย 6 Records
ตอบ
#include"stdio.h"
struct sporting
{
int date;
int month;
int year;
char name[20];
char sex[10];
int age;
char job[20];
char sport[20];
}sport;
void input_data()
{
printf("DATA\n");
printf("date is (dd/mm/yy): ");
scanf("%d/%d/%d",&sport.date,&sport.month,&sport.year);
printf("name: ");
scanf("%s",&sport.name);
printf("sex: ");
scanf("%s",&sport.sex);
printf("age: ");
scanf("%d",&sport.age);
printf("job: ");
scanf("%s",&sport.job);
printf("What you like sport: ");
scanf("%s",&sport.sport);
}
void show_data()
{
printf("\n\nDisplay your data is\n");
printf("date: ");
printf("%d:%d:%d\n",sport.date,sport.month,sport.year);
printf("name: ");
printf("%s\n",sport.name);
printf("sex: ");
printf("%s\n",sport.sex);
printf("age: ");
printf("%d\n",sport.age);
printf("job: ");
printf("%s\n",sport.job);
printf("What you like sport: ");
printf("%s\n",sport.sport);
}
main()
{
input_data();
show_data();
}
5. ให้นักศึกษาบอกความแตกต่างของการกำหนดตัวชนิด Array กับตัวแปร Pointer ในสภาพของการกำหนดที่อยู่ของข้อมูล
ตอบ
ความแตกต่างระหว่างตัวแปร Array และ Pointer คือตัวแปรตารางอาเรย์จะเก็บเฉพาะค่าต่างๆ ที่เป็นชนิดกันเดียวกับตัวแปรอาเรย์แต่ ตัวแปรพอยเตอร์จะเก็บเฉพาะค่าตำแหน่ง Address ตัวแปรเท่านั้น