Bài giảng Kiểu dữ liệu có cấu trúc

Để gải quyết dạng bài toán về dữ liệu có nhiều thành phần ta cần có một loại cấu trúc lưu trữ khác đó là kiểu dữ liệu có cấu trúc:

Ví dụ: Giải quyết bài toán về nhân sự, điểm thi tuyển sinh, tính lương .

Kiểu cấu trúc (Structure) là kiểu dữ liệu bao gồm nhiều thành phần có kiểu khác nhau, mỗi thành phần được gọi là một trường (field)

 

ppt21 trang | Chia sẻ: hienduc166 | Lượt xem: 752 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Kiểu dữ liệu có cấu trúc, để xem tài liệu hoàn chỉnh bạn click vào nút TẢI VỀ ở trên
KIỂU DỮ LIỆU CÓ CẤU TRÚCCÁC KIỂU DỮ LIỆU ĐÃ HỌCKiểu chuỗiKiểu mảngGiảiquyếtKiểu phần tử chỉ có một thành phầnKiểu phần tử có nhiều thành phầnKiểu dữ liệu có cấu trúcĐể gải quyết dạng bài toán về dữ liệu có nhiều thành phần ta cần có một loại cấu trúc lưu trữ khác đó là kiểu dữ liệu có cấu trúc:Ví dụ: Giải quyết bài toán về nhân sự, điểm thi tuyển sinh, tính lương..Kiểu cấu trúc (Structure) là kiểu dữ liệu bao gồm nhiều thành phần có kiểu khác nhau, mỗi thành phần được gọi là một trường (field)I.KIỂU CẤU TRÚC TRONG C1. Khái niệmCách 1: struct { ; ; .. ; }; [ds các biến cấu trúc];struct: là từ khoáLà các kiểu dữ liệu thành phần của cấu trúc. Là tên các thành phần của cấu trúcI.2 Định nghĩa kiểu cấu trúcCách 2: Sử dụng từ khóa typedef để định nghĩa kiểu: typedef struct { ; ; .. ; } ; Ví dụ 1: Để quản lý ngày, tháng, năm của một ngày trong năm ta có thể khai báo kiểu cấu trúc gồm 3 thông tin: ngày, tháng, năm. Cách 1: struct NgayThang { unsigned char Ngay; unsigned char Thang; unsigned int Nam; }; Cách 2: typedef struct { unsigned char Ngay; unsigned char Thang; unsigned int Nam; } NgayThang;Ví dụ 2: Mỗi sinh viên cần được quản lý bởi các thông tin: mã số sinh viên, họ tên, ngày tháng năm sinh, giới tính, địa chỉ thường trú. Lúc này ta có thể khai báo một struct gồm các thông tin trên.Cách 1:struct SinhVien { char MSSV[10]; char HoTen[40]; struct NgayThang NgaySinh; int Phai; char DiaChi[40]; }; Cách 2typedef struct { char MSSV[10]; char HoTen[40]; NgayThang NgaySinh; int Phai; char DiaChi[40]; } SinhVien; a. Đối với cấu trúc được định nghĩa theo cách 1:struct [];Ví dụ: Khai báo biến NgaySinh có kiểu cấu trúc NgayThang; biến SV có kiểu cấu trúc SinhVien.struct NgayThang NgaySinh;struct SinhVien SV;I. 3. KHAI BÁO BIẾN CÓ CẤU TRÚCb. Đối với các cấu trúc được định nghĩa theo cách 2: ,[]; Ví dụ: Khai báo biến NgaySinh có kiểu cấu trúc NgayThang; biến SV có kiểu cấu trúc SinhVienNgayThang NgaySinh; SinhVien SV; II.1 Truy xuất đến từng trường của biến cấu trúc.Cú pháp: . Vi dụ: Lấy họ tên, địa chỉ của sinh viên trong cấu trúc SV:SV.hoten; /* lấy họ tên sinh vien*/ SV.DiaChi; /* lấy địa chỉ sinh viên*/Lấy ngày sinh của sinh viên làm thế nào???II. CÁC THAO TÁC TRÊN BIẾN KIỂU CẤU TRÚC. .Lấy ngày, tháng, năm sinh của sinh viên làm như sau:SV.NgaySinh.ngay; /*Lấy ngày sinh*/SV.NgaySinh.Thang; /*Lấy tháng sinh*/SV.NgaySinh.Nam; /*Lấy Năm sinh*/II. 2 Truy xuất đến từng trường của biến cấu trúc có một cấu trúc lồng nhau.struct * ;Chú ý: Tên cấu trúc đã được khai báo trước đó theo một trongb 2 cách.Ví dụ: Ta có thể khai báo một con trỏ cấu trúc kiểu NgayThang như sau: struct NgayThang *p;III. CON TRỎ CẤU TRÚCIII.1 Khai báoVí dụ: Sau khi khởi tạo giá trị của cấu trúc: struct NgayThang Ngay = {20,04,2008}; p = &Ngay; /*gán p cho địa chỉ biến ngày*/Lúc này biến con trỏ p đã chứa địa chỉ của Ngay III.2 Sử dụng các con trỏ kiểu cấu trúcTruy cập đến từng trường của cấu trúc thông qua con trỏ của nó.Cú pháp:-> ;III.3 Truy cập các thành phần của cấu trúcđang được quản lý bởi con trỏ.Ví dụ:typedef struct { unsigned char Ngay; unsigned char Thang; unsigned int Nam; } NgayThang; 	NgayThang *p; /* khai báo con trỏ p*/P->ngay; 	/* lấy ngày*/P->thang; 	/* lấy tháng*/P->nam; 	/* lấy năm*/Nếu theo cách truy cập theo vùng nhớ con trỏ:(*contrỏ).trường cần truy cập;Truy cập qua vùng nhớ con trỏ thì ta làm như sau:typedef struct { unsigned char Ngay; unsigned char Thang; unsigned int Nam; } NgayThang;NgayThang *p; /* khai báo con trỏ p có kiểu ngày tháng*/(*p).ngay; /* lấy ngày*/(*p).thang; /* lấy tháng*/(*p).nam ; /*lấy năm*/

File đính kèm:

  • pptBai giang ve kieu du lieu co cau truc c.ppt