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