ปัญหา
เขียนโปรแกรม 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