วันจันทร์ที่ 3 สิงหาคม พ.ศ. 2552

DTS05-28/07/2552

สรุปการเรียนในครั้งนี้

เรื่อง Link List
ลิงค์ลิสต์ (Linked List) เป็นวิธีการเก็บข้อมูลอย่างต่อเนื่องของอิลิเมนต์ต่างๆ โดยมีพอยเตอร์เป็นตัวเชื่อมต่อ แต่ละอิลิเมนท์ เรียกว่าโนด (Node) ซึ่งในแต่ละโนดประกอบไปด้วย 2 ส่วน คือ
1. Data จะเก็บข้อมูลของอิลิเมนท์
2. Link Field ทำหน้าที่เก็บตำแหน่งของโนดต่อไปในลิสต์ในส่วนของ data จะเป็นรายการเดี่ยวหรือเรคคอร์ดก็ได้ ส่วนของ link เป็นส่วนที่เก็บตำแหน่งของโหนดถัดไป ถ้าในโหนดสุดท้ายจะเก็บค่า Null (ไม่มีค่าใดๆ ไม่มีการเชื่อมโยง) เป็นตัวบอกการสิ้นสุดโครงสร้างข้อมูลแบบลิงค์ลิสต์

ลิงค์ลิสต์ (Linked List) เป็นวิธีการเก็บข้อมูลอย่างต่อเนื่องของอิลิเมนต์ต่างๆ โดยมีพอยเตอร์เป็นตัวเชื่อมต่อ แต่ละอิลิเมนท์ เรียกว่าโนด (Node) ซึ่งในแต่ละโนดประกอบไปด้วย 2 ส่วน คือ
1. Data จะเก็บข้อมูลของอิลิเมนท์
2. Link Field ทำหน้าที่เก็บตำแหน่งของโนดต่อไปในลิสต์ในส่วนของ data จะเป็นรายการเดี่ยวหรือเรคคอร์ดก็ได้ ส่วนของ link เป็นส่วนที่เก็บตำแหน่งของโหนดถัดไป ถ้าในโหนดสุดท้ายจะเก็บค่า Null (ไม่มีค่าใดๆ ไม่มีการเชื่อมโยง) เป็นตัวบอกการสิ้นสุดโครงสร้างข้อมูลแบบลิงค์ลิสต์

Linked List แบบซับซ้อน
1. Circular Linked List เป็นลิงค์ลิสต์ที่สมาชิกตัวสุดท้ายมีตัวชี้ (list) ชี้ไปที่สมาชิกตัวแรกของลิงค์ลิสต์ จะมีการทำงานไปในทิศทางเดียวเท่านั้น คือ เป็นแบบวงกลม
2. Double Linked List เป็นลิงค์ลิสต์ที่มีทิศทางการทำแบบ 2 ทิศทาง ในลิงค์ลิสต์แบบ 2 ทิศทาง ส่วนข้อมูลจะมีตัวชี้ไปที่ข้อมูลก่อนหน้า (backward pointer) และตัวชี้ข้อมูลถัดไป (forward pointer)

วันอาทิตย์ที่ 2 สิงหาคม พ.ศ. 2552

การบ้าน .iostream.h

#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <time.h>

const int randNumSize = 50, numPerline = 8;
void showNum(int randNum[]);
void countOddNum(int randNum[]);
int main()
{
int randNum[randNumSize] = {0};
char menu; srand(time(NULL));
do
{
for(int n=0;n < randNumSize;n++)
{
randNum[n] = rand()%40 + 10;
}
showNum(randNum);
countOddNum(randNum);
cout << "Do you want to random again (Y/N)";
cin >> menu;
}
while(menu == 'Y');
return 0;
}
void showNum(int randNum[])
{
cout << "Show random Array " << randNumSize << " numbers :" << endl;
for(int i=0, showed=0; i < randNumSize; i++)
{
showed++ ;
cout << setw(5) << randNum[i];
if(showed == numPerline)
{
cout << endl;
showed = 0;
}
}
}
void countOddNum(int randNum[])
{
cout << "\n\nOdd numbers are :" << endl;
for(int i=0, Oddnum=0, sumOdd=0, showed=0; i < randNumSize; i++)
{
if(randNum[i]%2 == 1)
{
Oddnum++;
showed++;
sumOdd += randNum[i];
cout << setw(5) << randNum[i];
if(showed == numPerline)
{
cout << endl;
showed = 0;
}
}
}
cout << "\n\nOdd number = " << Oddnum << " Sum = " << sumOdd << endl;
}