โดยทั่วไปอาเรย์คือชุดของวัตถุข้อมูลที่คล้ายกันซึ่งจัดเก็บในตำแหน่งหน่วยความจำตามลำดับภายใต้หัวเรื่องทั่วไปหรือชื่อตัวแปร
ในขณะที่รายการที่เชื่อมโยงคือโครงสร้างข้อมูลที่มีลำดับขององค์ประกอบที่แต่ละองค์ประกอบเชื่อมโยงกับองค์ประกอบถัดไป มีสองฟิลด์ในองค์ประกอบของรายการที่เชื่อมโยง หนึ่งคือฟิลด์ข้อมูลและอื่น ๆ คือลิงค์ฟิลด์ฟิลด์ข้อมูลมีค่าจริงที่จะจัดเก็บและประมวลผล นอกจากนี้ฟิลด์ลิงก์ยังเป็นที่อยู่ของรายการข้อมูลถัดไปในรายการที่เชื่อมโยง ที่อยู่ที่ใช้ในการเข้าถึงโหนดโดยเฉพาะเรียกว่าตัวชี้
ความแตกต่างที่สำคัญอื่นระหว่างอาร์เรย์และรายการที่เชื่อมโยงคือ 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]); } - ในกรณีของอาเรย์แบบสองมิติมันจะต้องมีสองลูปและในทำนองเดียวกันอาเรย์มิติจะต้องมีเอ็นลูป
การดำเนินการกับอาร์เรย์คือ:
- การสร้างอาเรย์
- ภายในอาร์เรย์
- การแทรกองค์ประกอบใหม่
- การลบองค์ประกอบที่จำเป็น
- การปรับเปลี่ยนองค์ประกอบ
- การรวมอาร์เรย์
ตัวอย่าง
โปรแกรมต่อไปนี้แสดงให้เห็นถึงการอ่านและการเขียนของอาร์เรย์
#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 เรียกว่าพอยน์เตอร์ ดังนั้นฟิลด์ที่สองของรายการจะต้องเป็นประเภทพอยน์เตอร์
ประเภทของรายการที่เชื่อมโยงคือรายการที่เชื่อมโยงเดี่ยว, รายการที่เชื่อมโยงเป็นสองเท่า, รายการที่เชื่อมโยงแบบวงกลม, รายการที่เชื่อมโยงแบบวงกลมคู่
การดำเนินการในรายการที่เชื่อมโยงคือ:
- การสร้าง
- ภายใน
- การแทรก
- การลบ
- ค้นหา
- เรียงต่อกัน
- แสดง
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการสร้างรายการที่เชื่อมโยง:
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'));
}
ความแตกต่างที่สำคัญระหว่างอาร์เรย์และรายการที่เชื่อมโยง
- อาเรย์คือโครงสร้างข้อมูลที่มีการรวบรวมองค์ประกอบข้อมูลประเภทที่คล้ายกันในขณะที่รายการที่เชื่อมโยงถือเป็นโครงสร้างข้อมูลที่ไม่ใช่แบบดั้งเดิมมีการเก็บรวบรวมองค์ประกอบเชื่อมโยงที่ไม่ได้เรียงลำดับเรียกว่าโหนด
- ในอาร์เรย์องค์ประกอบนั้นเป็นของดัชนีเช่นถ้าคุณต้องการเข้าไปในองค์ประกอบที่สี่คุณต้องเขียนชื่อตัวแปรด้วยดัชนีหรือที่ตั้งของมันภายในวงเล็บเหลี่ยม
ในรายการที่เชื่อมโยงคุณต้องเริ่มจากส่วนหัวและหาทางผ่านจนกว่าคุณจะไปถึงองค์ประกอบที่สี่ - ในขณะที่การเข้าถึงอาร์เรย์องค์ประกอบนั้นเร็วในขณะที่รายการที่เชื่อมโยงต้องใช้เวลาเชิงเส้นดังนั้นจึงค่อนข้างช้า
- การดำเนินการเช่นการแทรกและการลบในอาร์เรย์ใช้เวลานานมาก ในทางกลับกันประสิทธิภาพของการดำเนินการเหล่านี้ในรายการที่เชื่อมโยงนั้นรวดเร็ว
- อาร์เรย์มีขนาดคงที่ ในทางตรงกันข้ามรายการที่เชื่อมโยงนั้นเป็นแบบไดนามิกและยืดหยุ่นและสามารถขยายและหดขนาดได้
- ในอาร์เรย์หน่วยความจำจะถูกกำหนดในช่วงเวลารวบรวมขณะที่อยู่ในรายการเชื่อมโยงซึ่งจะถูกจัดสรรระหว่างการดำเนินการหรือรันไทม์
- องค์ประกอบจะถูกจัดเก็บอย่างต่อเนื่องในอาร์เรย์ในขณะที่มันถูกเก็บแบบสุ่มในรายการที่เชื่อมโยง
- ความต้องการของหน่วยความจำน้อยลงเนื่องจากข้อมูลจริงถูกเก็บไว้ในดัชนีในอาร์เรย์ เมื่อเทียบกับมีความจำเป็นสำหรับหน่วยความจำเพิ่มเติมในรายการที่เชื่อมโยงเนื่องจากการจัดเก็บองค์ประกอบการอ้างอิงเพิ่มเติมต่อไปและก่อนหน้า
- นอกจากนี้การใช้หน่วยความจำยังไม่มีประสิทธิภาพในอาเรย์ ในทางกลับกันการใช้หน่วยความจำมีประสิทธิภาพในอาเรย์
ข้อสรุป
รายการ Array and Linked เป็นประเภทของโครงสร้างข้อมูลที่แตกต่างกันในโครงสร้างการเข้าถึงและการจัดการวิธีความต้องการหน่วยความจำและการใช้ประโยชน์ และมีข้อได้เปรียบและเสียเปรียบโดยเฉพาะในการนำไปใช้ ดังนั้นทั้งสองสามารถใช้ตามต้องการ