วันพฤหัสบดีที่ 23 กรกฎาคม พ.ศ. 2552

DTS 05-22/07/52

Linked List :
กระบวนการทำงานและฟังก์ชั่นที่ใช้ดำเนินงานพื้นฐาน (ต่อ)
1. กระบวนการทำงาน Traverse : การท่องไปใน list เพื่อเข้าถึงการประมวลผลข้อมูลนำเข้าของ list ก็ขึ้นอยู่กับประมวลผลด้วย
2. กระบวนการทำงาน Retrieve Node : การเรียกกับคืน โดยบอกตำแหน่งของข้อมูลและนำตำแหน่งที่ได้ค่าแสดง
3. ฟังก์ชั่น Empty list : ทดสอบว่า list ว่าง ถ้าจริง list ก็ว่าง ถ้าไม่จริง list ไม่ว่าง
4. ฟังก์ชั่น Full list : การทดสอบ list เต็มหรือไม่ ถ้าจริงหน่วยความจำเต็ม ถ้าไม่จริง สามารถมี node อื่นได้
5. ฟังก์ชั่น List count : นับจำนวนใน list โดยเอาค่า count มาแสดงที่อยู่ใน head node
6. กระบวนการทำงาน Destroy List : การทำลาย list

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


การบ้าน
ยกตัวอย่างในการใช้ชีวิตประจำวันเกี่ยวกับ Stack


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

DTS 04-15/07/52

Linked List :
ลิงค์ลิสต์ คือ การเชื่อมต่อรายการ
อิลิเมนท์ คือ ตัวแปรแต่ละตัวเป็นสมาชิก โดยมีพอยเตอร์เป็นตัวเชื่อม
Node คือ จุดเชื่อมต่อเข้าด้วยกัน ลักษณะของ Node ไม่จำเป็นต้องเป็นรูปวงกลม ประกอบด้วย 2 ด้วย คือ Data กับ Link Field โดย Data เชื่อมต่อกับ list ถ้า Data ของ list ไม่ได้มีการเชื่อมต่อกับตัวใดจ ะมีเครื่องหมายกากบาดในช่องนั้น และถ้า Node แรกนั้นไม่มีข้อมูลในดนดแรกของลิสต์นั้นจะเป็น null
กระบวนการทำงานและฟังก์ชั่นที่ใช้ดำเนินงานพื้นฐาน
1. กระบวนการทำงาน Create List : การสร้าง list ว่าง เพราะยังไม่มี data node จะใส่ 0 ไว้ในช่องว่างก่อน
2. กระบวนการทำงาน Insert Node : เพิ่มข้อมูลลงไปใน list ที่ต้องการ สามารถเปลี่ยนแปลงได้
3. กระบวนการทำงาน Delete Node : ต้องการลบในตำแหน่งที่ต้องการ จะมีการเปลี่ยนแปลงสมาชิกลดลง โดยถึงจะทำการสั่งให้ลบ
4. กระบวนการทำงาน Search List : ค้นหาข้อมูลใน list ที่ต้องการนำเข้าข้อมูล ถ้าจริงจะพบข้อมูล ถ้าไม่จริงจะไม่พบข้อมูลที่ต้องการ


การบ้าน
เขียนโปรแกรมเปรียบเทียบการใช้ฟังก์ชั่น stdio.h กับ iostream.h แต่ผลลัพธ์ออกมาต้องเหมือนกัน

การหาพื้นที่วงกลม สี่เหลี่ยมผืนผ้า สามเหลี่ยมจตุรัส
#include stdio.h
#include conio.h
void main(){
clrscr();
float area;int m, a, b;
printf(“1.Area of Circle\n2.Area of Rectangular\n3.Area of Square\n99.Stop\n”);

printf(“Press”);scanf(“%d”,& m);
while(m!=99){
if(m>=1 && m<=3){

switch(m){
case 1:
printf( “\nInput Radius” );
scanf(“%d”,& a);
area = (22.0/7) * a * a;
break;
case 2:
printf( “\nInput Width”);
scanf(“%d”,& a);
printf( “Input Long”);
scanf(“%d”,& b);
area = a * b; break;
case 3:
printf( “\nInput Width”);
scanf(“%d”,& a);
area = a * a;
break;
default:
break;
}
printf(“Area \n”);
}
else{
printf(“Invalid Data. Try again (Choose Integer 1-3 or 99 Exit)\n”);
}
printf( “Press”);
scanf(“%d”,& m);
}
printf(“End Program. Bye \n” , “Press Enter to Exit”);
getch(); }
……………………………………………..
#include iostraem.h
#include conio.h
void main(){
clrscr();
float area;

int m, a, b;
cout << “1.Area of Circle\n2.Area of Rectangular\n3.Area of Square\n99.Stop\n”;

cout << “Press “;
cin >> m;
while(m!=99){
if(m>=1 && m<=3){

switch(m){
case 1: cout << “\nInput Radius “; cin >> a;
area = (22.0/7) * a * a;
break;
case 2:
cout << “\nInput Width “;cin >> a;cout << “Input Long “;cin >> b;
area = a * b;
break;
case 3:
cout << “\nInput Width “;cin >> a;
area = a * a;
break;
default:
break;
}
cout << “Area ” <<>> m;
}
cout << “End Program. Bye \n” << “Press Enter to Exit”;

getch(); }


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

DTS 03 -01/07/52

Structure กับ pointer
pointer เป็นตัวแปรที่ทำหน้าที่เก็บตำแหน่ง (address) ของตัวแปรที่อยู่ในหน่วยความจำในการประกาศตัวแปร pointer จะต้องนำหน้าด้วยเครื่องหมาย * และเครื่องหมาย & เป็นเครื่องหมายที่บอกตำแหน่งที่อยู่ของตัวแปรที่เก็บไว้ในหน่วยความจำ
เช่น การกำหนดตัวแปร x = 10
x
10
1000 ....... address
โดยการกำหนดตัวแปร X ซึ่งอยู่ที่ตำแหน่ง 1000 มีค่า 10 เก็บอยู่
การประกาศ parameter เป็นตัวแปรแบบพอยน์เตอร์
เช่น void swap (int*p,int*q) .......การส่งพารามิเตอร์ 2 ตัว
Set and string
สตริงเป็นข้อมูลที่ประกอบด้วยตัวอักษร ตัวเลขหรือเครื่องหมายเรียงติดกันไป รวมทั้งช่องว่าง โดยการกำหนดค่าคงที่ตัวสตริง สามารถ กำหนดได้ทั้งนอกและในฟังก์ชัน เมื่อกำหนดไว้นอกฟังก์ชัน ชื่อค่าคงตัวเป็นพอยน์เตอร์ไปยังหน่วยความจำที่เก็บสตริง และเมื่อกำหนดไว้ในฟังก์ชัน จะเป็นพอยน์เตอร์ไปยังหน่วยความจำที่เก็บตัวมันเอง
การกำหนดค่าให้กับสตริง จะใช้เครื่องหมาย double quote (“ ”)
เช่น (“ ABC ”) คือ ชุดอักขระที่มีขนาด 4 โดยรวม \0 ด้วย