-ได้ทราบว่าคิวเป็นโครงสร้างข้อมูลแบบเชิงเส้นหรือลิเนียร์ลิสต์
-ได้รู้ว่าลักษณะการทำงานของคิวเป็นลักษณะของการเข้าก่อนออกก่อน
หรือเรียกว่าFIFO (First in First Out)
-ได้รู้ว่าการใส่สมาชิกตัวใหม่ลงในคิวเรียกว่า Enqueue
หมายถึงการใส่ข้อมูลNew Element ลงไปที่ส่วนเรียร์ของคิว
-ได้รู้ว่า การนำสมาชิกออกจากคิว เรียกว่า Dequeue
หมายถึงการนำออกจากส่วนหน้าของคิวและให้ข้อมูลนั้นกับ element
-ได้รู้การนำข้อมูลที่อยู่ตอนต้นของคิวมาแสดงเรียกว่า Queue Front แต่จะไม่ทำการเอาข้อมูลออกจากคิว
-การนำข้อมูลทีอยู่ตอนท้ายของคิวมาแสดงเรียกว่า Queue Rear แต่จะไม่ทำการเพิ่มข้อมูลเข้าไปในคิว
-ได้รู้ว่าการแทนที่ของคิวมี 2 วิธีคือ
1.การแทนที่ข้อมูลของคิวแบบลิงค์ลิสต์
2.การแทนที่ข้อมูลของคิวแบบอะเรย์
-ได้รู้ว่า การแทนที่ข้อมูลของคิวแบบลิงค์ลิสต์จะประกอบด้วย 2 ส่วนคือ
1.Head Node
2.Data Node
-ได้ทราบการดำเนินการเกี่ยวกับคิวว่ามีดังนี้คือ
1.Create Queue คือการจัดสรรหน่วยความจำให้แก่ Head Node และให้ค่า Pointer ทั้ง2ตัวมีค่าเป็น null
2. Enqueue คือการเพิ่มข้อมูลเข้าไปในคิว เปรียบเสมือนการ push ในแสตก
3.Dequeue คือ การนำข้อมูลออกจากคิว เปรียบเสมือนการ pop ในแสตก
4.Queue Front เป็นการนำข้อมูลทีอยู่ส่วนต้นของคิวมาแสดง
5.Queue Rear เป็นการนำข้อมูลทีอยู่ส่วนท้ายของคิวมาแสดง
6.Empty Queue คือเป็นการตรวจสอบว่าคิวว่างหรือไม่
7.Full Queue คือเป็นการตรวจสอบว่าคิวเต็มหรือไม่
8.Queue Count เป็นการนับจำนวนสมาชิกที่อยู่ในคิว
9.Destroy เป็นการลบข้อมูลทั้งหมดทีอยู่ในคิว
-ได้รู้ว่าการนำข้อมูลเข้าสู่คิว จะไม่สามาถนำเข้าในขณะที่คิวเต็มหรือไม่ว่าง ถ้าพยายามนำเข้าจะเกิดข้อผิดพลาดที่เรียกว่า Overflow
-ได้รู้ว่าการนำข้อมูลออกจากคิว จะไม่สามารถนำอะไรออกจากคิวที่ว่างเปล่าได้ ถ้าพยายามจะทำให้เกิดความผิดพลาดที่เรียกว่า Underflow
-วิธีการแก้ปัญหาในการนำเข้าข้อมูล จะใช้คิวที่เป็นแบบคิววงกลมซึ่งคิวช่องสุดท้ายนั้นต่อกับคิวช่องแรกสุด
-คิวแบบวงกลมคิวจะเต็มก็ต่อเมื่อมีการเพิ่มข้อมูลเข้าไปในคิวเรื่อย ๆจนกระทั่ง Rear มีค่าน้อยกว่า Frontอยู่ 1 ค่า คือ Rear = front -1
-การประยุกต์ใช้คิว เช่นการให้บริการลูกค้า ต้องวิเคราะห์จำนวนลูกค้าในคิวที่เหมาะสมว่าควรเป็นจำนวนเท่าใด
DTS-07-05-08-09
วันจันทร์ที่ 10 สิงหาคม พ.ศ. 2552
วันอังคารที่ 28 กรกฎาคม พ.ศ. 2552
สรุปการเรียนเรื่อง Stack
-ได้ทราบว่าสแตก เป็นโครงสร้างข้อมูลแบบลิเนียร์ลิสต์ ที่มีคุณสมบัติที่ว่า การเพิ่มหรือลบข้อมูลในแสตก จะทำที่ปลายข้างเดียวกัน ที่เขาเรียกว่า Top ของแสตก
-ได้รู้ถึงลักษณะที่สำคัญของแสตก คือข้อมูลที่ใส่หลังสุดจะถูกนำออกมาจาก สแตกเป็นลำดับแรกสุด เรียกคุณสมบัตินี้ว่า LIFO (Last ln First Out)
-ได้ทราบว่าการดำเนินงานพื้นฐานของสแตก ว่าการทำงานต่าง ๆของสแตกจะกระทำที่ปลายข้างหนึ่งของสแตกเท่านั้น
-ได้รู้ว่าการทำงานของสแตกมี 3 กระบวนการคือ
1. Push คือการนำข้อมูลใส่ลงในสแตก
2. Pop คือการนำข้อมูลออกจากส่วนบนสุดของสแตก
3. Stack Top เป็นการคัดลอกข้อมูลที่อยู่บนสุดของสแตก แต่ไม่ได้นำเอาข้อมูลนั้นออกจากสแตก
-ได้ทราบถึงการแทนที่ข้อมูลของสแตก ว่าทำได้ 2วิธีนี้คือ
1. การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสต์
2. การแทนที่ข้อมูลของสแตกแบบอะเรย์
-ได้ทราบว่าการแทนที่ข้อมูลของแสตกแบบลิงค์ลิสต์จะประกอบไปด้วย 2 ส่วนคือ
1. Head Node จะประกอบไปด้วย 2 ส่วนคือ Top pointer และจำนวนสมาชิกในสแตก
2. Data Node จะประกอบไปด้วยข้อมูล และ pointer ที่ชี้ไปยังข้อมูลตัวถัดไป
DTS05-22-07-09
-ได้รู้ถึงลักษณะที่สำคัญของแสตก คือข้อมูลที่ใส่หลังสุดจะถูกนำออกมาจาก สแตกเป็นลำดับแรกสุด เรียกคุณสมบัตินี้ว่า LIFO (Last ln First Out)
-ได้ทราบว่าการดำเนินงานพื้นฐานของสแตก ว่าการทำงานต่าง ๆของสแตกจะกระทำที่ปลายข้างหนึ่งของสแตกเท่านั้น
-ได้รู้ว่าการทำงานของสแตกมี 3 กระบวนการคือ
1. Push คือการนำข้อมูลใส่ลงในสแตก
2. Pop คือการนำข้อมูลออกจากส่วนบนสุดของสแตก
3. Stack Top เป็นการคัดลอกข้อมูลที่อยู่บนสุดของสแตก แต่ไม่ได้นำเอาข้อมูลนั้นออกจากสแตก
-ได้ทราบถึงการแทนที่ข้อมูลของสแตก ว่าทำได้ 2วิธีนี้คือ
1. การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสต์
2. การแทนที่ข้อมูลของสแตกแบบอะเรย์
-ได้ทราบว่าการแทนที่ข้อมูลของแสตกแบบลิงค์ลิสต์จะประกอบไปด้วย 2 ส่วนคือ
1. Head Node จะประกอบไปด้วย 2 ส่วนคือ Top pointer และจำนวนสมาชิกในสแตก
2. Data Node จะประกอบไปด้วยข้อมูล และ pointer ที่ชี้ไปยังข้อมูลตัวถัดไป
DTS05-22-07-09
สรุปการเรียน Lecture4 เรื่อง Linked List
-จากการที่ผมได้เรียนเรื่อง linked list นี้ได้รู้ว่า linked list นั้นเป็นวิธีการเก็บข้อมูลอย่างต่อเนื่องของ Element ต่าง ๆโดยมี pointer เป็นตัวเชื่อมต่อ
-และได้ทราบว่าแต่ละ Element ก็คือสมาชิกในกลุ่ม เรียกว่า โหนดซึ่งในแต่ละโหนดนั้นจะประกอบด้วย 2ส่วนคือ 1. Data
2. Link Field
-ผมได้รู้ว่าโครงสร้างข้อมูลแบบ linked list จะแบ่งเป็น 2ส่วนด้วยกันคือ
1. Head Structure จะประกอบด้วย 3ส่วน ได้แก่
1.จำนวนโหนดในลิสต์ก็คือ Count
2.pointer ที่ชี้ไปยังโหนดที่เข้าถึง ก็คือ Pos
3.pointer ที่ชี้ไปยังโหนดข้อมูลแรกของลิสต์
2.Data Node Structure
-ข้อมูลในโหนดแรกของลิสต์จะเป็น Null
-ได้รู้ linked list แบบซับซ้อนว่าเป็นแบบนี้คือ
1. Circular Linked List เป็นลิงค์ลิสต์ที่สมาชิกตัวสุดท้ายมีตัวชี้ List ชี้ไปที่สมาชิกตัวแรกของlinked list จะมีการทำงานไปในทิศทางเดียวเท่านั้น ก็คือเป็นแบบวงกลม
2. Double Linked List เป็น linked list ที่มีทิศทางการทำงานแบบ 2 ทิศทาง ในlinked list แบบ 2 ทิศทาง ส่วนข้อมูลจะมีตัวชี้ไปที่ข้อมูลก่อนหน้า backward pointer และตัวชี้ข้อมูลถัดไป forward pointer
DTS 04-22-07-09
-และได้ทราบว่าแต่ละ Element ก็คือสมาชิกในกลุ่ม เรียกว่า โหนดซึ่งในแต่ละโหนดนั้นจะประกอบด้วย 2ส่วนคือ 1. Data
2. Link Field
-ผมได้รู้ว่าโครงสร้างข้อมูลแบบ linked list จะแบ่งเป็น 2ส่วนด้วยกันคือ
1. Head Structure จะประกอบด้วย 3ส่วน ได้แก่
1.จำนวนโหนดในลิสต์ก็คือ Count
2.pointer ที่ชี้ไปยังโหนดที่เข้าถึง ก็คือ Pos
3.pointer ที่ชี้ไปยังโหนดข้อมูลแรกของลิสต์
2.Data Node Structure
-ข้อมูลในโหนดแรกของลิสต์จะเป็น Null
-ได้รู้ linked list แบบซับซ้อนว่าเป็นแบบนี้คือ
1. Circular Linked List เป็นลิงค์ลิสต์ที่สมาชิกตัวสุดท้ายมีตัวชี้ List ชี้ไปที่สมาชิกตัวแรกของlinked list จะมีการทำงานไปในทิศทางเดียวเท่านั้น ก็คือเป็นแบบวงกลม
2. Double Linked List เป็น linked list ที่มีทิศทางการทำงานแบบ 2 ทิศทาง ในlinked list แบบ 2 ทิศทาง ส่วนข้อมูลจะมีตัวชี้ไปที่ข้อมูลก่อนหน้า backward pointer และตัวชี้ข้อมูลถัดไป forward pointer
DTS 04-22-07-09
วันอังคารที่ 14 กรกฎาคม พ.ศ. 2552
การบ้าน แบบฝึกหัดท้ายบทที่ 2
1.ให้นักศึกษากำหนดค่าของArray1มิติ และ Array2มิติ
arrray1มิติ int num[10]={2,4,6,8,10,12,14,16,18,20};
arrray2มิติint a[2][3] = {{1,2,3},{4,5,6}}
2.ให้นักศึกษาหาค่าของ A[2], A[6] จากค่า A={2,8,16,24,9,7,3,8}- A[2], A[6] = 16,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 date
{
int day,month,year;
};
struct Student_information
{
float id;
char name[40];
struct date birthday;
float score;
}std;
void input_data()
{
printf("Student Data\n");
printf("ID = ");
scanf("%f",&std.id);
printf("Name : ");
scanf("%s",&std.name);
printf("Date of birth : ");
scanf("%d",&std.birthday.day);
printf("month of birth : ");
scanf("%d",&std.birthday.month);
printf("Year of birht : ");
scanf("%d",&std.birthday.year);
printf("Enter your Score : ");
scanf("%f",&std.score);
}
void show_data()
{
printf("\nDisplay Data of student \n");
printf("ID : %.0f\n",std.id);
printf("Name : %s\n",std.nam
printf("birthday : %d-%d-%d\n",std.birthday.day,std.birthday.month,std.birthday.year);
printf("Scare : %.2f\n",std.score);
}
main()
{
input_data();
show_data();
}
5.ให้นักศึกษาบอกความแตกต่างของการกำหนดตัวแปรชนิด Array กับตัวแปร Pointer ในสภาพของการกำหนดที่อยู่ของข้อมูล
การกำหนดที่อยู่ของ array จะเป็นการกำหนดแบบแยกประเภท เช่น integer, char, float แยกประเภทของข้อมูลว่าเป็น
ข้อมูลจำนวนเต็มบวก,ตัวเลขทศนิยม,ตัวอักษร
ส่วน pointerเป็นการสงค่าตัวแปรไปกลับระหว่างที่อยู่ของตัวแปรที่อยู่ในหน่วยความจำ
arrray1มิติ int num[10]={2,4,6,8,10,12,14,16,18,20};
arrray2มิติint a[2][3] = {{1,2,3},{4,5,6}}
2.ให้นักศึกษาหาค่าของ A[2], A[6] จากค่า A={2,8,16,24,9,7,3,8}- A[2], A[6] = 16,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 date
{
int day,month,year;
};
struct Student_information
{
float id;
char name[40];
struct date birthday;
float score;
}std;
void input_data()
{
printf("Student Data\n");
printf("ID = ");
scanf("%f",&std.id);
printf("Name : ");
scanf("%s",&std.name);
printf("Date of birth : ");
scanf("%d",&std.birthday.day);
printf("month of birth : ");
scanf("%d",&std.birthday.month);
printf("Year of birht : ");
scanf("%d",&std.birthday.year);
printf("Enter your Score : ");
scanf("%f",&std.score);
}
void show_data()
{
printf("\nDisplay Data of student \n");
printf("ID : %.0f\n",std.id);
printf("Name : %s\n",std.nam
printf("birthday : %d-%d-%d\n",std.birthday.day,std.birthday.month,std.birthday.year);
printf("Scare : %.2f\n",std.score);
}
main()
{
input_data();
show_data();
}
5.ให้นักศึกษาบอกความแตกต่างของการกำหนดตัวแปรชนิด Array กับตัวแปร Pointer ในสภาพของการกำหนดที่อยู่ของข้อมูล
การกำหนดที่อยู่ของ array จะเป็นการกำหนดแบบแยกประเภท เช่น integer, char, float แยกประเภทของข้อมูลว่าเป็น
ข้อมูลจำนวนเต็มบวก,ตัวเลขทศนิยม,ตัวอักษร
ส่วน pointerเป็นการสงค่าตัวแปรไปกลับระหว่างที่อยู่ของตัวแปรที่อยู่ในหน่วยความจำ
วันจันทร์ที่ 13 กรกฎาคม พ.ศ. 2552
สรุปการเรียน Lecture2 เรื่อง Pointer
-ได้รู้ว่า pointer นั้นเป็นตัวแปรชนิดหนึ่งที่ทำหน้าที่เก็บตำแหน่งที่อยู่ ของตัวแปรในหน่วยความจำ
-ได้ทราบถึงเครื่องหมายที่ใช้ทำงานกับตัวแปร pointer
1.เครื่องหมาย & เป็นเครื่องหมายที่ใช้เครื่องเมื่อต้องการให้เอาค่าตำแหน่งที่อยู่ของตัวแปรที่เก็บไว้ในหน่วยความจำออกมาใช้
2.เครื่องหมาย * นั้นมีการใช้งาน 2 ลักษณะ คือ
2.1 ใช้ในการประกาศ parameter ว่าเป็นตัวแปรแบบ pointer
2.2 ใช้เป็น การอ้างอิง จะใช้เมื่อต้องการนำคาที่อยู่ในตำแหน่งที่ตัวแปร pointerนั้นชี้อยู่ออกมาแสดง
-ได้รู้ว่าการใช้ตัวแปร pointer and array ตัวแปร pointer จะใช้อ้างถึงค่าที่เก็บไว้ในตัวแปรชุดได้เช่นนี้
char str[80], *pl;
pl = str;
DTS 03- 01-07-09
-ได้ทราบถึงเครื่องหมายที่ใช้ทำงานกับตัวแปร pointer
1.เครื่องหมาย & เป็นเครื่องหมายที่ใช้เครื่องเมื่อต้องการให้เอาค่าตำแหน่งที่อยู่ของตัวแปรที่เก็บไว้ในหน่วยความจำออกมาใช้
2.เครื่องหมาย * นั้นมีการใช้งาน 2 ลักษณะ คือ
2.1 ใช้ในการประกาศ parameter ว่าเป็นตัวแปรแบบ pointer
2.2 ใช้เป็น การอ้างอิง จะใช้เมื่อต้องการนำคาที่อยู่ในตำแหน่งที่ตัวแปร pointerนั้นชี้อยู่ออกมาแสดง
-ได้รู้ว่าการใช้ตัวแปร pointer and array ตัวแปร pointer จะใช้อ้างถึงค่าที่เก็บไว้ในตัวแปรชุดได้เช่นนี้
char str[80], *pl;
pl = str;
DTS 03- 01-07-09
วันอังคารที่ 30 มิถุนายน พ.ศ. 2552
การบ้าน structure
#include"stdio.h"
struct date
{
int day,month,year;
};
struct Student_information
{
float id;
char name[40];
struct date birthday;
float score;
int age;
char sex;
}std;
void input_data()
{
printf("Student Data\n");
printf("ID = ");
scanf("%f",&std.id);
printf("Name : ");
scanf("%s",&std.name);
printf("Date of birth : ");
scanf("%d",&std.birthday.day);
printf("month of birth : ");
scanf("%d",&std.birthday.month);
printf("Year of birht : ");
scanf("%d",&std.birthday.year);
printf("Enter your Score : ");
scanf("%f",&std.score);
printf("Enter your age : ");
scanf("%d",&std.age);
printf("Enter your sex : ");
scanf("%s",&std.sex);
}
void show_data()
{
printf("\nDisplay Data of student \n");
printf("ID : %.0f\n",std.id);
printf("Name : %s\n",std.name);
printf("birthday : %d-%d-%d\n",std.birthday.day,std.birthday.month,std.birthday.year);
printf("Scare : %.2f\n",std.score);
printf("age : %.d\n",std.age);
printf("age : %.s\n",std.sex);
}
main()
{
input_data();
show_data();
}
struct date
{
int day,month,year;
};
struct Student_information
{
float id;
char name[40];
struct date birthday;
float score;
int age;
char sex;
}std;
void input_data()
{
printf("Student Data\n");
printf("ID = ");
scanf("%f",&std.id);
printf("Name : ");
scanf("%s",&std.name);
printf("Date of birth : ");
scanf("%d",&std.birthday.day);
printf("month of birth : ");
scanf("%d",&std.birthday.month);
printf("Year of birht : ");
scanf("%d",&std.birthday.year);
printf("Enter your Score : ");
scanf("%f",&std.score);
printf("Enter your age : ");
scanf("%d",&std.age);
printf("Enter your sex : ");
scanf("%s",&std.sex);
}
void show_data()
{
printf("\nDisplay Data of student \n");
printf("ID : %.0f\n",std.id);
printf("Name : %s\n",std.name);
printf("birthday : %d-%d-%d\n",std.birthday.day,std.birthday.month,std.birthday.year);
printf("Scare : %.2f\n",std.score);
printf("age : %.d\n",std.age);
printf("age : %.s\n",std.sex);
}
main()
{
input_data();
show_data();
}
สมัครสมาชิก:
ความคิดเห็น (Atom)