8/4/2020
20
39
1.2.2 Ngôn ngữ diễn đạt giải thuật
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int max(int *x,int n)
{ int result = x[0];
for (int i=1;i<n;i++)
if (result<x[i])
result=x[i];
return result;
}
void main()
{
int n,*a;
printf("nhap so phan tu:"); scanf("%d",
&n);
a=(int*)malloc(n*sizeof(int));
if (a==NULL)
{
printf("khong du bo nho");
exit(0);
}
printf("\n nhap cac phan tu cua day:\n");
for (int i=0;i<n;i++)
scanf("%d",&a[i]);
printf("gia tri max cua day
la:%d",max(a,n));
getch();
}
Cấu trúc dữ liệu và giải thuật
Chương 2 (12t)
2.1 Mảng
2.2 Danh sách
2.3 Ngăn xếp
2.4 Hàng đợi
Cấu trúc dữ liệu và giải thuật 40
8/4/2020
21
2.1 Mảng (Array)
2.1.1 Khái niệm
2.1.2 Một số phép toán trên mảng
2.1.3 Cài đặt mảng 1 và 2 chiều
Cấu trúc dữ liệu và giải thuật 41
2.1.1 Khái niệm
Khái niệm:mng một tập thứ tự gm một số cố
định các phần tử cùng kiểu dữ liệu
một cấu trúc dữ liệu
Mỗi phần tử được xác định truy cập bởi tên mng
chỉ số của phần tử đó (là thứ tự của phần tử)truy cập
ngẫu nhiên
Kiểu dữ liệu mảng: 1chiều, nhiều chiều
dụ:vectơ, ma trận
Cấu trúc dữ liệu và giải thuật 42
8/4/2020
22
2.1.1 Khái niệm
Cấu trúc lưu trữ mảng: là hình thức lưu trữ kế
tiếp
Địa chỉ các phần tử liên tiếp nhau
Các phần tử được sắp xếp theo hàng
Bộ nhcố định
Đặc điểm:
Cấu trúc đơn gin, truy cập nhanh
Thiếu mềm dẻo trong các phép toán như xóa, chèn
Cấu trúc dữ liệu và giải thuật 43
2.1.2 Một số phép toán trên mảng
Tạo lập mng
Nhp/xuất mng
Cập nhập phần tử mng
Duyệt mảng (tìm kiếm một phần tử của mảng)
Không có phép toán thêm/bớt phần t
( Sinh viên tự cài đt)
Cấu trúc dữ liệu và giải thuật 44
8/4/2020
23
2.1.3 Cài đặt mảng 1 chiều 2 chiều
#define N 10
void main() { // cài đặt một mảng có kích thước cho
trước
clrscr();
int a[N];// khai bao mang kich thuoc N
for(int i=0; i<N; i++) {
printf("nhap gia tri cho phan tu thu %d: ",i);
scanf("%d", &a[i]); }
for(int j=0; j<N; j++) {
printf(" %d, ",a[j]); }
getch();
}
Cấu trúc dữ liệu và giải thuật 45
2.1.3 Cài đặt mảng 1 chiều 2 chiều
#define N 10
#define M 5
void main() { //cài đặt một mảng 2 chiều, kích thước cho trước
int a[N][M];// khai bao mang kich thuoc NxM
for(int i=0; i<N; i++) {
for(int j=0; j<M; j++) {
printf("nhap gia tri cho phan tu thu %d %d: ",i , j);
scanf("%d", &a[i][j]); } }
for(int i=0; i<N; i++) {
for(int j=0; j<M; j++) {
printf(" %d, ",a[i][j]);} }
}
Cấu trúc dữ liệu và giải thuật 46
8/4/2020
24
2.2 Danh sách (List)
2.2.1 Khái niệm
2.2.2 Phân loại danh ch
2.2.4 Cài đặt danh sách liên kết
2.2.5 Các phép toán trên danh sách liên kết
Cấu trúc dữ liệu và giải thuật 47
2.2.1 Khái niệm
Khái niệm :danh sách tập thứ tự các phần tử cùng
kiểu
Số phần tử biến động
Các phần tử được sắp xếp theo thứ tự trước sau
Danh sách tuyến tính:thể hiện quan hệ lân cận giữa c
phần tử
Hoặc danh sách rỗng hoặc dạng (a1, a2,, an)
n: độ i / ch thước của danh sách
Mỗi phần tử thường mt bản ghi bao gồm một hoặc nhiều
trường (field)
dụ:danh sách sinh viên, danh mục điện thoại
Cấu trúc dữ liệu và giải thuật 48