Danh mục

Bài giảng Ngôn ngữ lập trình C: Dữ liệu kiểu cấu trúc - Ninh Thị Thanh Tâm

Số trang: 55      Loại file: pdf      Dung lượng: 448.51 KB      Lượt xem: 13      Lượt tải: 0    
Jamona

Xem trước 6 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Mục đích của chương học "Dữ liệu kiểu cấu trúc" này nhằm giúp sinh viên có thể biết cách khai báo các kiểu dữ liệu phức tạp: cấu trúc; biết cách biểu diễn các kiểu danh sách liên kết nhờ cấu trúc tự trỏ; biết được các thao tác trên danh sách liên kết.
Nội dung trích xuất từ tài liệu:
Bài giảng Ngôn ngữ lập trình C: Dữ liệu kiểu cấu trúc - Ninh Thị Thanh Tâm NGÔN NGỮ LẬP TRÌNH CDữ liệu kiểu cấu trúc Ninh Thị Thanh Tâm Khoa CNTT – HV Quản lý Giáo dụcMục đích Biết cách khai báo các kiểu dữ liệu phức tạp: cấu trúc Cách biểu diễn các kiểu danh sách liên kết nhờ cấu trúc tự trỏ Các thao tác trên danh sách liên kếtNội dung Cấu trúc  Khái niệm, định nghĩa  Khai báo cấu trúc  Đặt tên kiểu dữ liệu  Thao tác trên biến cấu trúc  Truyền biến cấu trúc cho hàm Các cấu trúc tự trỏ  Ngăn xếp - LIFO  Hàng đợi - FIFO  Cây nhị phân – BINARY TREECấu trúc Khái niệm, định nghĩa Khai báo cấu trúc Đặt tên kiểu dữ liệu Thao tác trên biến cấu trúc Truyền biến cấu trúc cho hàmKhái niệm, định nghĩa Cấu trúc:  Một kiểu dữ liệu bao gồm nhiều thành phần có thể thuộc nhiều kiểu dữ liệu khác nhauKhai báo cấu trúc Khai báo kiểu dữ liệu cấu trúc: struct { };  struct là từ khóa đứng trước một khai báo cấu trúc  là tên hợp lệ, dùng làm tên cấu trúc  tương tự khai báo biếnVí dụstruct sinhvien { char ho_ten[30]; float diemtb;};struct diem { float x,y;};Khai báo cấu trúc (2) Khai báo biến cấu trúc: struct ;Ví dụ: struct sinhvien sv, dssv[100]; struct diem p, q, dsdiem[50];Khai báo cấu trúc (3) Khai báo đồng thời cấu trúc và biến cấu trúc: struct [] { } ;Ví dụ struct dagiac { int n; struct diem dsdinh[20]; } dg1, dg2; Có thể khai báo trực tiếp kiểu của các thành phần là biến cấu trúc bên trong một cấu trúc lớn hơn struct dagiac { int n; struct { float x, y; } dsdinh[20]; } dg1, dg2;Đặt tên kiểu dữ liệu Từ khóa typedef  Cho phép thêm tên mới cho một kiểu dữ liệu  Cú pháp typedef ;  là kiểu dữ liệu muốn thêm tên  là tên mới muốn đặt  Dùng để định nghĩa các kiểu dữ liệu phức hợp thành một tên duy nhất để dễ dàng khi viếtVí dụ typedef unsigned char byte;  byte được xem như kiểu dữ liệu tương đương với unsigned char  Có thể sử dụng trong khai báo các biến như kiểu dữ liệu khácVí dụ/*struct1.c*/#include #include typedef unsigned char byte;void main(){ byte ch = 12, ch1; int i; clrscr(); ch1 = ch; for (i=0; iSử dụng typedef với cấu trúc Cho phép đơn giản hóa cách viết khai báo Ví dụ: struct sinhvien { char hoten[30]; float diemtb; }; typedef struct sinhvien sv; typedef struct sinhvien *ptr_sv;  Cấu trúc struct sinhvien sẽ là sv  Định nghĩa một kiểu con trỏ cấu trúc có tên là ptr_sv  Khi đó:  sv sv1, sv2, dssv[100]; ~ struct sinhvien sv1, sv2, dssv[100];  ptr_sv ptrsv; ~ struct sinhvien *ptrsv;Thao tác trên biến cấu trúc Truy cập thành phần trong cấu trúc Truy cập tới thành phần cấu trúc từ con trỏ cấu trúc Nhập dữ liệu cho biến cấu trúcTruy cập thành phần trong cấu trúc Cần đến tên thành phần và biến tương ứng Cú pháp: .  Dấu chấm (.) là toán tử truy cập thành phần cấu trúc  Nếu có nhiều cấu trúc lồng nhau thì sử dụng nhiều dấu (.) tương ứng Ví dụ:  p.x= 0; p.y = 5;  dg1.dsdinh[10].x = 0; dg1.n = 10;Truy cập thành phần cấu trúc từcon trỏ cấu trúc Nếu ptr là con trỏ cấu trúc, có 2 cách để truy cập tới thành phần của nó  Cách 1: (*ptr).  Cách 2: ptr->Nhập dữ liệu cho biến cấu trúc Nên sử dụng biến trung gian  Nhập dữ liệu qua biến trung gian  Gán các giá trị nhập được cho các thành phần cần nhập Ví dụ float temp; printf(Toa do x=); scanf(%f, &temp); p.x = temp; printf(Toa do y=); scanf(%f, &temp); p.y = temp;Ví dụ/*struct2.c*/#include #include struct sinhvien { char hoten[30]; float diemtb;};void main(){ int n; int k; int i; struct sinhvien dssv[100]; char name[30]; float temp; clrscr();n = 0; do { printf(Nhap thong tin sinh vien thu %d ,n+1); printf(Ho ten:); fflush(stdin); gets(name); if (strcmp(name,)!=0) { strcpy(dssv[n].hoten,name); printf(Diem:); scanf(%f,&temp); dssv[n++].diemtb = temp; } } while (strcmp(name,)!=0); ...

Tài liệu được xem nhiều: