ความแตกต่างระหว่าง Array และรายการที่เชื่อมโยง

ผู้เขียน: Laura McKinney
วันที่สร้าง: 3 เมษายน 2021
วันที่อัปเดต: 7 พฤษภาคม 2024
Anonim
Array vs Linked List | Difference Between Arrays And Linked List | Data Structures | Simplilearn
วิดีโอ: Array vs Linked List | Difference Between Arrays And Linked List | Data Structures | Simplilearn

เนื้อหา


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

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

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

ความแตกต่างที่สำคัญอีกประการระหว่างอาร์เรย์และรายการที่เชื่อมโยงคือ Array มีขนาดคงที่และจำเป็นต้องประกาศก่อน แต่รายการที่เชื่อมโยงไม่ จำกัด ขนาดและขยายและสัญญาระหว่างการดำเนินการ


  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

แผนภูมิเปรียบเทียบ

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


นิยามของ Array

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

ให้เราดูแนวคิดบางอย่างที่ต้องจดจำเกี่ยวกับอาร์เรย์:

  • แต่ละองค์ประกอบของอาเรย์สามารถเข้าถึงได้โดยอธิบายชื่อของอาเรย์แล้วตามด้วยดัชนีหรือตัวห้อย (การกำหนดตำแหน่งขององค์ประกอบในอาเรย์) ภายในวงเล็บเหลี่ยม ตัวอย่างเช่นในการดึงองค์ประกอบที่ 5 ของอาร์เรย์เราจำเป็นต้องเขียนคำสั่ง a
  • ในกรณีใด ๆ องค์ประกอบของอาร์เรย์จะถูกเก็บไว้ในตำแหน่งหน่วยความจำต่อเนื่อง
  • องค์ประกอบแรกสุดของอาร์เรย์มีดัชนีเป็นศูนย์ มันหมายถึงองค์ประกอบแรกและสุดท้ายจะถูกระบุว่าเป็นและตามลำดับ
  • จำนวนองค์ประกอบที่สามารถเก็บไว้ในอาเรย์คือขนาดของอาเรย์หรือความยาวนั้นได้รับจากสมการต่อไปนี้:
    (ขอบเขตบน - ล่าง) + 1
    สำหรับอาร์เรย์ข้างต้นมันจะเป็น (9-0) + 1 = 10 โดยที่ 0 คือขอบเขตล่างสุดของอาร์เรย์และ 9 คือขอบเขตบนของอาร์เรย์
  • อาร์เรย์สามารถอ่านหรือเขียนผ่านลูปได้ ถ้าเราอ่านอาเรย์หนึ่งมิติมันต้องใช้ลูปหนึ่งสำหรับการอ่านและอื่น ๆ สำหรับการเขียน (ไอเอ็นจี) อาร์เรย์ตัวอย่างเช่น:
    สำหรับการอ่านอาเรย์
    สำหรับ (i = 0; i <= 9; i ++)
    {scanf (“% d”, & a); }
    ข สำหรับการเขียนอาเรย์
    สำหรับ (i = 0; i <= 9; i ++)
    {f (“% d”, a); }
  • ในกรณีของอาเรย์แบบสองมิติมันจะต้องมีสองลูปและในทำนองเดียวกันอาเรย์มิติจะต้องเอ็นลูป

การดำเนินการกับอาร์เรย์คือ:

  1. การสร้างอาร์เรย์
  2. ภายในอาเรย์
  3. การแทรกองค์ประกอบใหม่
  4. การลบองค์ประกอบที่จำเป็น
  5. การปรับเปลี่ยนองค์ประกอบ
  6. การรวมอาร์เรย์

ตัวอย่าง

โปรแกรมต่อไปนี้แสดงให้เห็นถึงการอ่านและการเขียนของอาร์เรย์

#include
#include
เป็นโมฆะหลัก ()
{
int a, i;
f ("ใส่อาร์เรย์");
สำหรับ (i = 0; i <= 9; i ++)
{
scanf ("% d", & a);
}
f ("ใส่อาร์เรย์");
สำหรับ (i = 0; i <= 9; i ++)
{
f ("% d n", a);
}
getch ();
}

ความหมายของรายการที่เชื่อมโยง

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

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

ประเภทของรายการที่เชื่อมโยงคือรายการที่เชื่อมโยงเดี่ยว, รายการที่เชื่อมโยงเป็นสองเท่า, รายการที่เชื่อมโยงแบบวงกลม, รายการที่เชื่อมโยงแบบวงกลมคู่

การดำเนินการในรายการที่เชื่อมโยงคือ:

  1. การสร้าง
  2. ภายใน
  3. การแทรก
  4. การลบ
  5. ค้นหา
  6. เรียงต่อกัน
  7. แสดง

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการสร้างรายการที่เชื่อมโยง:

โหนดโครงสร้าง
{
จำนวน NUM;
stuct node * ถัดไป
}
start = NULL;
เป็นโมฆะสร้าง ()
{
โหนดโครงสร้าง typedef NODE;
NODE * p, * q;
ทางเลือกถ่าน;
first = NULL;
ทำ
{
p = (NODE *) malloc (ขนาดของ (NODE));
f ("ป้อนรายการข้อมูล n");
scanf ("% d", & p -> จำนวน);
ถ้า (p == NULL)
{
q = เริ่ม;
ในขณะที่ (q -> ถัดไป! = NULL)
{q = q -> ถัดไป
}
p -> next = q -> next;
q -> = p;
}
อื่น
{
p -> next = start;
start = p;
}
f ("คุณต้องการดำเนินการต่อ (พิมพ์ y หรือ n) หรือไม่ n");
scanf ("% c", & ตัวเลือก);
}
ในขณะที่ ((ตัวเลือก == y) || (ตัวเลือก == Y));
}

  1. อาเรย์คือโครงสร้างข้อมูลที่มีการรวบรวมองค์ประกอบข้อมูลประเภทที่คล้ายกันในขณะที่รายการที่เชื่อมโยงถือเป็นโครงสร้างข้อมูลที่ไม่ใช่แบบดั้งเดิมมีการเก็บรวบรวมองค์ประกอบเชื่อมโยงที่ไม่ได้เรียงลำดับเรียกว่าโหนด
  2. ในอาร์เรย์องค์ประกอบนั้นเป็นของดัชนีเช่นถ้าคุณต้องการเข้าไปในองค์ประกอบที่สี่คุณต้องเขียนชื่อตัวแปรด้วยดัชนีหรือที่ตั้งภายในวงเล็บเหลี่ยม
    ในรายการที่เชื่อมโยงคุณต้องเริ่มจากส่วนหัวและหาทางผ่านจนกว่าคุณจะไปถึงองค์ประกอบที่สี่
  3. ในขณะที่การเข้าถึงอาร์เรย์องค์ประกอบนั้นรวดเร็วในขณะที่รายการที่เชื่อมโยงต้องใช้เวลาเชิงเส้นดังนั้นจึงค่อนข้างช้า
  4. การดำเนินการเช่นการแทรกและการลบในอาร์เรย์ใช้เวลานานมาก ในทางกลับกันประสิทธิภาพของการดำเนินการเหล่านี้ในรายการที่เชื่อมโยงนั้นรวดเร็ว
  5. อาร์เรย์มีขนาดคงที่ ในทางตรงกันข้ามรายการที่เชื่อมโยงนั้นเป็นแบบไดนามิกและยืดหยุ่นและสามารถขยายและหดขนาดได้
  6. ในอาร์เรย์หน่วยความจำจะถูกกำหนดในช่วงเวลารวบรวมขณะที่อยู่ในรายการที่เชื่อมโยงซึ่งจะถูกจัดสรรระหว่างการดำเนินการหรือรันไทม์
  7. องค์ประกอบจะถูกจัดเก็บอย่างต่อเนื่องในอาร์เรย์ในขณะที่มันถูกเก็บแบบสุ่มในรายการที่เชื่อมโยง
  8. ความต้องการของหน่วยความจำน้อยลงเนื่องจากข้อมูลจริงถูกเก็บไว้ในดัชนีในอาร์เรย์ เมื่อเทียบกับมีความจำเป็นสำหรับหน่วยความจำเพิ่มเติมในรายการที่เชื่อมโยงเนื่องจากการจัดเก็บองค์ประกอบการอ้างอิงเพิ่มเติมต่อไปและก่อนหน้า
  9. นอกจากนี้การใช้หน่วยความจำยังไม่มีประสิทธิภาพในอาเรย์ ในทางกลับกันการใช้หน่วยความจำมีประสิทธิภาพในอาเรย์

ข้อสรุป

รายการ Array and Linked เป็นชนิดของโครงสร้างข้อมูลที่แตกต่างกันในโครงสร้างการเข้าถึงและการจัดการวิธีความต้องการหน่วยความจำและการใช้ประโยชน์ และมีข้อได้เปรียบและเสียเปรียบโดยเฉพาะในการนำไปใช้ ดังนั้นทั้งสองสามารถใช้ตามต้องการ