Abstract Data Type: ADT อาจถูกกำหนดให้เป็นชุดของค่าข้อมูลและการดำเนินการที่เกี่ยวข้องซึ่งมีการระบุอย่างแม่นยำโดยไม่ขึ้นกับการใช้งานใด ๆ ดังนั้น Abstract Data Type จึงเป็นการรวบรวมข้อมูลและชุดของการดำเนินการที่ใช้ในการจัดการข้อมูลนั้น ชุดของการดำเนินการกำหนดอินเทอร์เฟซของ ADT ตราบใดที่ ADT ปฏิบัติตามเงื่อนไขของอินเทอร์เฟซก็ไม่สำคัญว่าจะใช้ ADT อย่างไร เนื่องจากใน ADT ค่าข้อมูลและการดำเนินการถูกกำหนดด้วยความแม่นยำทางคณิตศาสตร์แทนที่จะเป็นการใช้งานในภาษาคอมพิวเตอร์เราอาจมีเหตุผลเกี่ยวกับผลกระทบของการดำเนินงานความสัมพันธ์กับชนิดข้อมูลนามธรรมอื่น ๆ ไม่ว่าโปรแกรมจะใช้ชนิดข้อมูลเป็นต้นหรือไม่
ความแตกต่างพื้นฐานระหว่างชนิดข้อมูลนามธรรม (ADT) และชนิดข้อมูลที่เป็นรูปธรรมคือหลังทำให้เราสามารถดูการแสดงที่เป็นรูปธรรมในขณะที่อดีตซ่อนการเป็นตัวแทนจากเรา ADT อาจเป็น pure ADT หรือ ADT ที่สามารถอัปเดตได้ ADT ที่แท้จริงคือสิ่งที่การดำเนินการทั้งหมดเป็นฟังก์ชั่นที่บริสุทธิ์ ซึ่งหมายความว่าการดำเนินการไม่มีผลข้างเคียง โดยเฉพาะอย่างยิ่งพวกเขาจะไม่แก้ไขหรืออัปเดตอาร์กิวเมนต์ของอินพุตนั้น พวกเขาเพียงแค่ใช้อาร์กิวเมนต์เหล่านี้เพื่อสร้างผลลัพธ์ซึ่งเป็นค่าใหม่ของ ADT (หรือประเภทอื่น ๆ ) คอนกรีตส่วนใหญ่นั้นบริสุทธิ์ ตัวอย่างเช่นไม่มีการดำเนินการกับจำนวนเต็มจริง ๆ แก้ไขจำนวนเต็ม การดำเนินการทั้งหมดเช่น '+' จะให้ผลลัพธ์ที่สดใหม่
ADT ที่อัปเดตได้คือการดำเนินการบางอย่างที่เปลี่ยนค่าของ ADT ตัวอย่างเช่นสมมติว่าเรามีการดำเนินการที่เรียกว่า 'ป๊อป' ที่ใช้สแต็กเป็นอาร์กิวเมนต์และแก้ไข (“ เข้าที่”,“ ทำลายล้าง”) โดยลบรายการที่มีลำดับความสำคัญสูงสุด การดำเนินการนี้จะถือว่าไม่บริสุทธิ์และ ADT ทั้งหมดก็จะไม่บริสุทธิ์ด้วย ADT อาจเป็น ADT ที่ผู้ใช้กำหนด
เรารู้ว่า Abstract Data Type เป็นชนิดข้อมูลที่ตรงตามเงื่อนไขสองข้อต่อไปนี้:
การเป็นตัวแทนหรือคำจำกัดความของประเภทและการดำเนินงานที่มีอยู่ในหน่วยไวยากรณ์เดียว
การเป็นตัวแทนของวัตถุประเภทนั้นถูกซ่อนไว้จากหน่วยโปรแกรมที่ใช้ประเภทดังนั้นการดำเนินการโดยตรงเท่านั้นที่เป็นไปได้ในวัตถุเหล่านั้นเป็นสิ่งที่ระบุไว้ในคำจำกัดความของประเภท
ผู้ใช้กำหนดประเภทข้อมูลนามธรรมควรจัดเตรียม:
นิยามชนิดที่อนุญาตให้หน่วยโปรแกรมประกาศตัวแปรประเภท แต่ซ่อนการแสดงตัวแปรเหล่านี้
ชุดของการดำเนินการสำหรับจัดการกับวัตถุประเภท
ตัวอย่างของชนิดข้อมูลนามธรรมที่ผู้ใช้กำหนดคือโครงสร้าง 'C' มีสี่ประเภทพื้นฐาน: int, char, float และ double อย่างไรก็ตาม 'C' ยังช่วยให้โปรแกรมเมอร์สามารถกำหนดประเภทของตนเองได้ โครงสร้างเป็นตัวอย่างหนึ่ง โครงสร้างคือการรวมส่วนต่าง ๆ โดยที่แต่ละส่วนมีชนิดที่มีอยู่บางส่วน
struct abc
{int x;
float y;
};
นิยามโครงสร้างข้างต้นไม่ได้สร้างตัวแปรใด ๆ แต่มันจะสร้างชนิดใหม่ ตัวแปรประเภทนี้อาจถูกสร้างในลักษณะที่คล้ายคลึงกับตัวแปรที่มีอยู่แล้วภายใน
struct abc a;
คำหลัก typedef ช่วยให้เราสามารถสร้างชื่อประเภทใหม่สำหรับประเภทใหม่ของเรา
ตัวอย่างเช่น:
typedef struct abc AB;
โดยที่ AB เป็นชื่อประเภทใหม่ที่สามารถใช้สร้างประเภทใหม่ได้
AB b;
โครงสร้างข้อมูล: ต่อไปนี้เป็นคุณสมบัติลักษณะของโครงสร้างข้อมูล:
มันมีรายการข้อมูลส่วนประกอบซึ่งอาจเป็นอะตอมหรือโครงสร้างข้อมูลอื่น (ยังคงเป็นโดเมน)
ชุดของการดำเนินการกับหนึ่งในองค์ประกอบของรายการ
กำหนดกฎว่าส่วนประกอบเกี่ยวข้องกันอย่างไรและกับโครงสร้างโดยรวม (การยืนยัน)
โครงสร้างข้อมูล:
โครงสร้างข้อมูลอาจเป็นแบบคงที่หรือแบบไดนามิก โครงสร้างข้อมูลแบบสแตติกมีขนาดคงที่ ความหมายนี้แตกต่างจากความหมายของตัวดัดแปลงแบบคงที่ อาร์เรย์เป็นแบบคงที่ เมื่อเรากำหนดจำนวนองค์ประกอบที่สามารถเก็บไว้ได้จำนวนนั้นจะไม่เปลี่ยนแปลง โครงสร้างข้อมูลแบบไดนามิกเติบโตและลดขนาดในเวลาดำเนินการตามความต้องการของเนื้อหา มีการใช้โครงสร้างข้อมูลแบบไดนามิกโดยใช้ลิงก์
โครงสร้างข้อมูลอาจแบ่งออกเป็นโครงสร้างข้อมูลเชิงเส้นและโครงสร้างข้อมูลที่ไม่ใช่เชิงเส้น ในโครงสร้างข้อมูลเชิงเส้นทุกองค์ประกอบมีบรรพบุรุษและผู้สืบทอดที่ไม่ซ้ำกันยกเว้นองค์ประกอบแรกและสุดท้ายในขณะที่ในกรณีของโครงสร้างข้อมูลที่ไม่ใช่เชิงเส้นไม่มีข้อ จำกัด ดังกล่าวเนื่องจากองค์ประกอบอาจถูกจัดเรียงในรูปแบบที่ต้องการใด ๆ เป็นตัวแทนประเภทดังกล่าว