การลบโหนด (Delete node)
กำหนดค่า pList คือ พอยน์เตอร์เริ่มต้น
pPre คือ พอยน์เตอร์โหนด
pLoc คือ โหนดพอยน์เตอร์
dataout คือ ข้อมูลที่จัดเก็บในโหนด
หลักการทำงาน คือ ทำการลบข้อมูลพร้อมโหนดออกจากลิงค์ลิสต์และคืนค่าหน่วยความจำ
ก่อนการกำหนดค่า กำหนด pList คือ พอยน์เตอร์ที่ชี้ไปยังโหนดต้นลิสต์
pPre คือ พอยน์เตอร์ที่ใช้ไปยังลิงค์ของโหนดก่อนหน้าโหนดที่ต้องการ
pLoc คือ พอยน์เตอร์ที่ชี้ไปยังโหนดที่ต้องการลบ
dataout คือ ตำแหน่งโหนดที่จัดเก็บข้อมูลที่ต้องการลบ
หลังการทำงาน ข้อมูลจะถูกลบไปและทำการคืนพื้นที่ ที่จองให้กับหน่วยความจำ
การค้นหาลิสต์ (Search list)
กำหนดค่า pList พอยน์เตอร์เริ่มต้น
pPre พอยน์เตอร์โหนด
pLoc พอยน์เตอร์โหนด
target ชนิดของคีย์
หลักการทำงาน ทำการรันหาลิสต์และเทียบค่ากับตำแหน่งชนิดของคีย์
เพื่อตรวจสอบการตรงกันของตำแหน่ง
ก่อนการทำงาน กำหนด pList เป็นพอยน์เตอร์ชี้ค่าที่ตำแหน่งเริ่มต้น
กำหนด pPre เป็นพอยน์เตอร์ตัวแปรเก็บตำแหน่งโหนดก่อนหน้า
กำหนด pLoc เป็นพอยน์เตอร์ตัวแปรเก็บตำแหน่งตัวเลือก
กำหนด target เป็นคีย์ที่กำหนดการค้นหา
หลังการทำงาน กำหนด pLoc ชี้ไปยังโหนดและทำการเปรียบค่าคีย์ตามเงื่อนไขจนกว่าจะครบทุกโหนด
หรือค้นเจอลิสต์ที่ต้องการ
การคืนค่า คืนค่าจริงหากค้นเจอลิสต์
คืนค่าเท็จหากค้นไม่พบลิสต์
การตรวจสอบลิสต์ว่าง
หลักการทำงาน ทำการตรวจสอบลิสต์ว่าง
ก่อนการทำงาน กำหนด pList ชี้ไปยังโหนดต้นลิสต์อ่านค่า count
การคืนค่า คืนค่าจริงถ้า countว่าง
คืนค่าเท็จถ้า countไม่ว่าง
การตรวจลิสต์เต็ม
กำหนด pList เป็นพอยน์เตอร์เริ่มต้น
หลักการทำงาน ทำการตรวจสอบลิสต์ว่าเต็มหรือไม่
ก่อนการทำงาน ทำกำหนด pList ชี้ไปยังโหนดต้นลิสต์
การคืนค่า คืนค่าจริงหากไม่สามารถสร้างลิสต์ใหม่ได้
คืนค่าเท็จหากสามารถสร้างลิสต์ใหม่ได้
การยกเลิกลิสต์
การกำหนด pList พอยน์เตอร์เริ่มต้น
หลักการทำงาน ทำการลบข้อมูลทั้งหมดในลิสต์และโหนดต่างๆออกให้หมด
ก่อนการทำงาน pList ชี้ไปยังโหนดต้นลิสต์ที่จัดเก็บข้อมูลของลิสต์
หลังการทำงาน ข้อมูลทุกตัวพร้อมกับโหนดต้นลิสต์ถูกลบ
การคืนค่า พอยน์เตอร์มีค่าเป็น nul
สแตก (Stack)
สแตกสามารถจัดเก็บได้ทั้งแบบเรคคอร์ด อาร์เรย์ หรือการจัดเก็บในลักษณะของลิงค์ลิสต์
โดยรูปแบบของการทำงานนั้นจะเป็นเสมือนการจัดเก็บหรือบันทึกสมาชิกในลักษณะของ
การพักไว้เมื่อต้องการดึงเอาข้อมูลหรือสมาชิกไปใช้ ก็สามารถนำออกไปใช้ได้แต่ต้อง
นำออกมาในลักษณะของสมาชิกที่ถูกนำเข้ามาหลังสุดออกก่อน
ที่เรียกว่า Last In First Out (LIFO)
การทำงานของสแตก
Push หรือการนำเข้าข้อมูล
การนำเข้าข้อมูลเป็นการดำเนินการในลักษณะของการเพิ่มข้อมูลในสแตกกรณีที่ไม่มีข้อมูล
ใดอยู่ก็จะนำเข้าไปในตำแหน่งแรก ซึ่งเรียกข้อมูลแรกว่าตำแหน่ง top แต่หากนำข้อมูลเข้าไปใหม่
ตำแหน่ง top ก็จะเปลี่ยนไปเป็นของข้อมูลที่เข้าไปใหม่ และต้องระวังผิดพลาดที่เกิดจาก
stack over flow คือไม่มีพื้นที่ว่างสำหรับนำข้อมูลเข้า
Pop หรือการดึงออกข้อมูล
การดึงออกข้อมูล คือ การนำข้อมูลออกจากสแตก โดยการดึงข้อมูลจากตำแหน่ง top
แต่ก็ต้องตรวจสอบหากไม่มีข้อมูลในสแตกแล้วไปทำการ pop ข้อมูลจะเกิดการผิดพลาด
ที่เรียกว่า Stack Under Flow คือไม่มีข้อมูลภายในสแตกหรือสแตกว่าง
Top หรือตำแหน่งบนสุด
ตำแหน่งบนสุดของสแตกนั้นใช้ top เป็นตัวกำหนด ซึ่งจะทำให้รู้หากต้องการ pop
หรือ push ข้อมูลจะต้องทำที่ตำแหน่งนี้ top เป็นเพียงสิ่งที่บอกตำแหน่งของข้อมูลสูงสุดใหม่
หากมีการ push และ pop ตำแหน่งของ top ก็จะเปลียนไปเสมอ
ตัวอย่างสแตกที่เราเห็นในชีวิตประจำวันทั่วไป
1.การกินไอติมเป็นก้อน เพราะเวลาตักไอติมเราจะกินก้อนสุดท้ายก่อนเพราะก้อนแรกมันจะอยู่ใต้แก้วไอติม เป็นต้น
2.การทำนาฬิกาทราย เพราะเราต้องใส่ทรายเข้าไปก่อนแล้วแล้วเราคว่ำนาฬิกาทราย ทรายอันสุดท้ายจะออกมาก่อน
3.การทำขนมชั้น เวลาเรากินขนมชั้นเรากินชั้นบนก่อนแล้วค่อยกินชั้นสุดท้าย
การบ้าน
# include
main()
{
int num;
printf("Enter your num:");
scanf("%d",&num);
if(num >0)
printf("type+\n");
else
if (num==0)
printf("type0\n");
else
printf("type-");
}
แบบ
# inciude
main( )
{
int num;
cout<<“enter you num:”;
cin>>num;
if(num >0)
cout<<“type+\n”;
else if (num= =0)
cout<< “type0\n”;
else cout <<“type-\n”;
}
0utput
output
Enter your num:_
===========================
Enter 8_
type+
ความเหมือนหรือต่างกัน
มีความเหมือนกันในการใช้ เพราะว่า iostream.h นั้นถือได้ว่าเป็นฟังก์ชั่นของC++ เหมือนกันจึงเป็นฟัก์ชั่นที่สามารถใช้ได้ทั้ง C และ C++