Computer >> Máy Tính >  >> Lập trình >> lập trình C

Chương trình C để xóa một phần tử mảng bằng cách sử dụng Con trỏ

Vấn đề

Viết chương trình C để người dùng xóa một phần tử khỏi mảng trong thời gian chạy và kết quả sẽ hiển thị trên màn hình sau khi xóa. Nếu phần tử đã xóa không nằm trong một mảng, thì chúng ta cần hiển thị Đầu vào không hợp lệ.

Giải pháp

Một mảng được sử dụng để chứa nhóm các phần tử chung dưới một tên.

Các hoạt động của mảng như sau -

  • Chèn
  • Xóa
  • Tìm kiếm

Thuật toán

Tham khảo thuật toán để xóa các phần tử vào một mảng với sự trợ giúp của con trỏ.

Bước 1 - Khai báo và đọc số lượng phần tử.

Bước 2 - Khai báo và đọc kích thước mảng trong thời gian chạy.

Bước 3 - Nhập các phần tử của mảng.

Bước 4 - Khai báo một biến con trỏ.

Bước 5 - Phân bổ bộ nhớ động trong thời gian chạy.

Bước 6 - Nhập một phần tử sẽ bị xóa.

Bước 7 - Sau khi xóa, các phần tử được chuyển sang trái một vị trí.

Ví dụ

Kích thước của mảng là:5

Các phần tử của mảng như sau -

1 2 3 4 5

Nhập vị trí của phần tử sẽ bị xóa:4

Kết quả như sau -

After deletion the array elements are:
1 2 3 5

Ví dụ

Sau đây là chương trình C để chèn các phần tử vào một mảng với sự trợ giúp của con trỏ -

#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");
   }
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

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