ปัญหา
เขียนโปรแกรม C เพื่อแทรกองค์ประกอบลงในอาร์เรย์ที่รันไทม์โดยผู้ใช้และผลลัพธ์ที่จะแสดงบนหน้าจอหลังจากการแทรก หากองค์ประกอบที่แทรกมีขนาดใหญ่กว่าขนาดของอาร์เรย์ เราจำเป็นต้องแสดงอินพุตที่ไม่ถูกต้อง
วิธีแก้ปัญหา
อาร์เรย์ใช้เพื่อเก็บกลุ่มขององค์ประกอบทั่วไปภายใต้ชื่อเดียว
การทำงานของอาร์เรย์มีดังนี้ −
- แทรก
- ลบ
- ค้นหา
อัลกอริทึม
อ้างอิงอัลกอริทึมเพื่อแทรกองค์ประกอบลงในอาร์เรย์โดยใช้พอยน์เตอร์
ขั้นตอนที่ 1:ประกาศและอ่านจำนวนองค์ประกอบ
ขั้นตอนที่ 2:ประกาศและอ่านขนาดอาร์เรย์ที่รันไทม์
ขั้นตอนที่ 3:ป้อนองค์ประกอบอาร์เรย์
ขั้นตอนที่ 4:ประกาศตัวแปรตัวชี้
ขั้นตอนที่ 5:จัดสรรหน่วยความจำแบบไดนามิกที่รันไทม์
ขั้นตอนที่ 6:ป้อนตำแหน่งที่ควรแทรกองค์ประกอบ
ขั้นตอนที่ 7:แทรกองค์ประกอบใหม่ที่ตำแหน่งนั้นและองค์ประกอบทางขวาจะถูกเลื่อนตำแหน่งเดียว
ตัวอย่าง
ขนาดของอาร์เรย์คือ:5
องค์ประกอบอาร์เรย์มีดังนี้ -
1 2 3 4 5
แทรกองค์ประกอบใหม่:9
ที่ตำแหน่ง:4
ผลลัพธ์จะเป็นดังนี้ −
After insertion the array elements are: 1 2 3 9 4 5
ตัวอย่าง
ต่อไปนี้เป็นโปรแกรม C เพื่อแทรกองค์ประกอบลงในอาร์เรย์โดยใช้พอยน์เตอร์ -
#include<stdio.h> #include<stdlib.h> void insert(int n1, int *a, int len, int ele){ int i; printf("Array elements after insertion is:\n"); for(i=0;i<len-1;i++){ printf("%d\n",*(a+i)); } printf("%d\n",ele); for(i=len-1;i<n1;i++){ printf("%d\n",*(a+i)); } } int main(){ int *a,n1,i,len,ele; printf("enter size of array elements:"); scanf("%d",&n1); a=(int*)malloc(n1*sizeof(int)); printf("enter the elements:\n"); for(i=0;i<n1;i++){ scanf("%d",a+i); } printf("enter the position where the element need to be insert:\n"); scanf("%d",&len); if(len<=n1){ printf("enter the new element that to be inserted:"); scanf("%d",&ele); insert(n1,a,len,ele); } else { printf("Invalid Input"); } return 0; }
ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะสร้างผลลัพธ์ต่อไปนี้ -
enter size of array elements:5 enter the elements: 1 3 5 7 2 enter the position where the element need to be insert: 5 enter the new element that to be inserted:9 Array elements after insertion are: 1 3 5 7 9 2