แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

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

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

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

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

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

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

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

นิยามของ Array

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

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

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

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

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

ตัวอย่าง

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

#include
#include
void main ()
{
int a[10], i;
printf("Enter the array");
for ( i= 0; i <= 9; i++)
{
scanf ( "%d", &a[ i ] ) ;
}
printf( "Enter the array" );
for (i = 0 ; i <= 9 ; i++)
{
printf ( "%d\n", a[ i ] ) ;
}
getch ();
}

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

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

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

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

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

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

ตัวอย่าง

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

struct node
{
int num;
stuct node *next;
}
start = NULL;
void create()
{
typedef struct node NODE;
NODE *p, *q;
char choice;
first = NULL;
do
{
p = (NODE *) malloc (sizeof (NODE));
printf ("Enter the data item\n");
scanf ("%d", & p -> num);
if (p == NULL)
{
q = start;
while (q -> next ! = NULL)
{ q = q -> next
}
p -> next = q -> next;
q -> = p;
}
else
{
p -> next = start;
start = p;
}
printf ("Do you want to continue (type y or n) ? \n");
scanf ("%c", &choice) ;
}
while ((choice == 'y') || (choice == 'Y'));
}

ความแตกต่างที่สำคัญระหว่างอาร์เรย์และรายการที่เชื่อมโยง

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

ข้อสรุป

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

Top