Một số thao tác với mảng 1 chiều [Cấu trúc dữ liệu mảng]
Đăng lúc: 05:09 PM - 08/06/2023 bởi Charles Chung - 690Trong khoa học máy tính, cấu trúc dữ liệu mảng là một cấu trúc dữ liệu bao gồm một nhóm các phần tử giá trị hoặc biến, mỗi phần tử được xác định ít nhất bằng một chỉ số (index) hoặc khóa (key). Trong bài viết này chúng ta sẽ tìm hiểu về cấu trúc dữ liệu mảng 1 chiều và một vài thao tác trên nó.
1. Giới thiệu về mảng
- Một kiểu dữ liệu có cấu trúc do người lập trình định nghĩa.
- Biểu diễn một dãy phần tử có cùng kiểu. Ví dụ: dãy các số nguyên, dãy các ký tự…
- Kích thước được xác định ngay khi khai báo và không bao giờ thay đổi (mảng tĩnh).
- Các phần tử của mảng được phân biệt qua chỉ số, chỉ số phần tử đầu tiên tính từ 0.
- Mỗi phần tử tương đương với một biến.
- Trong ngôn ngữ C luôn chỉ định một dãy các ô nhớ liên tục cho một biến kiểu mảng.
2. Khai báo và khởi tạo mảng 1 chiều trong C
- Khai báo mảng
//cu phap
data_type arr_name[n]; //n la so phan tu
//-----------Vi du--------------------
//khai bao mang so nguyen a 10 phan tu
int a[10];
//khai bao mang so thuc b 10 phan tu
float b[10];
//khai bao mang ky tu (chuoi) 25 ky tu
char fullname[25];
- Khai báo và khởi tạo giá trị
//khai bao mang so nguyen a 5 phan tu va khoi tao gia tri
int a[5]={8,4,5,6,7};
//khai bao mang so thuc b 5 phan tu va khoi tao gia tri
double b[10]={4.9,3.5,2.7,2.1,6.0};
- Truy cập các phần tử trong mảng
//gan lai cac gia tri cho phan tu mang b
b[0]=5.2;
b[1]=-2.4;
//in ra phan tu thu 3
printf("b[3]=%f",b[2]);
3. Một số thao tác với mảng 1 chiều trong C
- Nhập mảng
//dinh nghia ham nhap du lieu cho mang
void input(int a[],int n)
{
for(int i=0;i<n;i++)
{
printf("\na[%d]:",i);
scanf("%d",&a[i]);
}
}
- In ra mảng
//dinh nghia ham hien thi du lieu
void display(int a[],int n)
{
for(int i=0;i<n;i++)
{
printf("%5d",a[i]);
}
}
- Tìm phần tử nhỏ nhất
//dinh nghia ham tim max
void showMax(int a[], int n){
int max=a[0];
for(int i=1;i<n;i++)
if(a[i]>max)
max=a[i];
printf("Max: %d", max);
}
- Tìm phần tử lớn nhất
//dinh nghia ham tim max
void showMin(int a[], int n){
int min=a[0];
for(int i=1;i<n;i++)
if(a[i]<min)
min=a[i];
printf("Min: %d", min);
}
- Sắp xếp mảng tăng/giảm
//dinh nghia ham sap xep du lieu
void sort(int a[],int n, int sortType)
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(a[i]>a[j] && sortType==1)
{
int tg=a[i];
a[i]=a[j];
a[j]=tg;
}
if(a[i]<a[j] && sortType==0)
{
int tg=a[i];
a[i]=a[j];
a[j]=tg;
}
}
}
}
- Chèn 1 phần tử vào mảng
//dinh nghia ham chen 1 phan tu vao mang
int insert(int a[], int n, int x)
{
int position;
printf("\nEnter position for insert:");
scanf("%d",&position);
if(position>=0 && position<n)
{
int i=n;
while(i>position)
{
a[i]=a[i-1];
i--;
}
a[position]=x;
return 1;//chen thanh cong
}
return 0;//chen khong thanh cong
}
- Xóa 1 phần tử trong mảng
//dinh nghia ham xoa 1 phan tu cua mang
int delete(int a[], int n)
{
int position;
printf("\nEnter position for delete:");
scanf("%d",&position);
if(position>=0 && position<n)
{
int i=position;
while(i<n-1)
{
a[i]=a[i+1];
i++;
}
return 1;//xoa thanh cong
}
return 0;//xoa khong thanh cong
}
- Tìm kiếm phần tử trong mảng
//dinh nghia ham tim kiem phan tu
int search(int a[], int n)
{
int value,position=-1;
printf("\nEnter value for search:");
scanf("%d",&value);
for(int i=0;i<n;i++)
{
if(a[i]==value)
{
position=i;
break;
}
}
return position;
}
- Chương trình chính
//ham main
void main()
{
int n=10;
int m[100];
printf("\n--------Input array-------");
input(m,n);
printf("\n--------Display arrray--------\n");
display(m,n);
//goi ham tim max
showMax(a,n);
//goi ham tim min
showMin(a,n);
//goi ham sap xep
sort(m,n,0);
printf("\n--------Display arrray after sort--------\n");
display(m,n);
//dinh nghia phan tu can chen
int x=50;
//goi ham chen
if(insert(m,n,x)==1)
n++;
else
printf("\nPosition invalid!");
printf("\n--------Display arrray after insert--------\n");
display(m,n);
//goi ham xoa
if(delete(m,n)==1)
n--;
else
printf("\nPosition invalid!");
printf("\n--------Display arrray after delete--------\n");
display(m,n);
//goi ham tim kiem
int position=search(m,n);
if(position>=0)
printf("\nFound at %d",position);
else
printf("\nNot found!");
getch();
}
- Chạy và xem kết quả
Link tải tài liệu học và các bài thực hành: https://hanam88.com/kho-tai-lieu/10/133/slide-bai-giang-va-bai-tap-thuc-hanh-mon-cau-truc-du-lieu-va-giai-thuat-co-ban-chi-danh-cho-sinh-vien-bach-khoa-aptech-.html
thay lời cảm ơn!
Các bài cũ hơn
- Review bài tập lớn PythonAI-Nhận diện biển số xe khi vào, ra khỏi bãi gửi-Đỗ Cao Thiên-C2010i1-Bách Khoa Aptech. (02:49 PM - 25/04/2023)
- Review Bài tập lớn môn Python AI-Nhận dạng cử chỉ bàn tay điều khiển chuột máy tính-Phí Hữu Kiên-C2010G-Bách Khoa Aptech (07:54 PM - 19/04/2023)
- Review bài tập môn khai phá dữ liệu MongoDB-Đặng Thị Bích Ngọc-C2009G1-Bách Khoa Aptech (11:31 AM - 31/03/2023)
- Hướng dẫn cài đặt MongoDB Community Server và sử dụng Visual Code để làm việc với nó (07:27 PM - 16/03/2023)
- Review bài tập lớn môn Python AI-Nhận diện cử chỉ bàn tay và hiển chị chữ cái-[C2009i1]-Nguyễn Đức Vinh Bách Khoa Aptech (09:07 AM - 04/03/2023)