Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 44 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
44
Dung lượng
478,56 KB
Nội dung
Giảng viên: Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến Con trỏ Đệ quy Cấu trúc Bài tập Cấu trúc liệu giải thuật - HCMUS 2013 Con trỏ Đệ quy Cấu trúc Bài tập Cấu trúc liệu giải thuật - HCMUS 2013 Địa nhớ: Cấu trúc liệu giải thuật - HCMUS 2013 Địa nhớ: int X; X = 5; Cấu trúc liệu giải thuật - HCMUS 2013 Khái niệm đặc biệt C/C++ Biến trỏ: loại biến dùng để chứa địa Khai báo: *; Cấu trúc liệu giải thuật - HCMUS 2013 Ví dụ: int *a; /*con trỏ đến kiểu int*/ float *b; /*con trỏ đến kiểu float*/ NGAY *pNgay; /*con trỏ đến kiểu NGAY*/ SINHVIEN *pSV; /*con trỏ đến kiểu SINHVIEN*/ Cấu trúc liệu giải thuật - HCMUS 2013 Lưu ý: Xác định địa nhớ: tốn tử & Xác định giá trị ô nhớ địa biến trỏ: toán tử * Con trỏ NULL Truy cập thành phần cấu trúc: -> Cấu trúc liệu giải thuật - HCMUS 2013 Cấp phát vùng nhớ động: Cấp phát: toán tử new Hủy: toán tử delete Ví dụ: int *p; p = new int; //delete p; p = new int[100]; //delete []p; Cấu trúc liệu giải thuật - HCMUS 2013 10 Ví dụ: int i; int *p; p = &i; int j; j = *p; int day = pNgay->ngay; Cấu trúc liệu giải thuật - HCMUS 2013 30 Định nghĩa cấu trúc: struct { ; ; … ; }; Ví dụ: struct NGAY { int ngay; int thang; int nam; }; Cấu trúc liệu giải thuật - HCMUS 2013 31 Sử dụng: ; Ví dụ: NGAY NgayBatDau, NgayKetThuc; Cấu trúc liệu giải thuật - HCMUS 2013 32 Truy cập thành phần cấu trúc: NGAY ngaysinh; ngaysinh.ngay = 10; ngaysinh.thang = 1; ngaysinh.nam = 1990; SINHVIEN sv; … printf(“Ho ten sinh vien : %s”, sv.hoten); Cấu trúc liệu giải thuật - HCMUS 2013 33 Định nghĩa cấu trúc: Điểm hệ tọa độ Oxy Đoạn thẳng hệ tọa độ Oxy Sách thư viện Cấu trúc liệu giải thuật - HCMUS 2013 34 Định nghĩa cấu trúc: Điểm hệ tọa độ Oxy struct DIEM { float x; float y; }; Cấu trúc liệu giải thuật - HCMUS 2013 35 Định nghĩa cấu trúc: Điểm hệ tọa độ Oxy struct DOANTHANG { DIEM BatDau; DIEM KetThuc; }; Cấu trúc liệu giải thuật - HCMUS 2013 36 Một ví dụ Nhập vào tọa độ điểm kiểm tra xem điểm có nằm đường thẳng y=2x+1 không? Cấu trúc liệu giải thuật - HCMUS 2013 37 Một ví dụ Nhập vào tọa độ điểm kiểm tra xem điểm có nằm đường thẳng y=2x+1 khơng? Nhập điểm: DIEM diem; printf("Nhap vao mot diem: \n"); printf("Toa x: "); scanf("%f", &diem.x); printf("Toa y: "); scanf("%f", &diem.y); Cấu trúc liệu giải thuật - HCMUS 2013 38 Một ví dụ Nhập vào tọa độ điểm kiểm tra xem điểm có nằm đường thẳng y=2x+1 không? Kiểm tra: if (diem.y == * diem.x +1) printf("Diem (%f, %f) thuoc duong thang\n",diem.x, diem.y); else printf("Diem (%f, %f) khong thuoc duong thang\n",diem.x, diem.y); Cấu trúc liệu giải thuật - HCMUS 2013 39 Con trỏ Đệ quy Cấu trúc Bài tập Cấu trúc liệu giải thuật - HCMUS 2013 40 Cho đoạn code sau đây: int int p = q = r = i; *p, *q, *r; &i; &i; p; Nếu *r = 5, hỏi *p, *q có giá trị bao nhiêu? Nếu i = 20 *r có giá trị bao nhiêu? Cấu trúc liệu giải thuật - HCMUS 2013 41 Cho mảng chiều số nguyên Viết hàm đệ quy xuất mảng Cho mảng chiều số nguyên Viết hàm đệ quy xuất mảng theo thứ tự ngược (từ phải sang trái) Cấu trúc liệu giải thuật - HCMUS 2013 42 Cho mảng chiều số nguyên Viết hàm đếm số lượng phần tử dương có mảng Cho mảng chiều số nguyên Viết hàm đếm số lượng phần tử âm có mảng Cấu trúc liệu giải thuật - HCMUS 2013 43 Cho mảng chiều số nguyên Viết hàm đệ quy kiểm tra mảng có thỏa mãn tính chất ‘tồn giá trị âm’ hay khơng? Cho mảng chiều số nguyên Viết hàm đệ quy tìm giá trị lớn có mảng Cho mảng chiều số nguyên Viết hàm đệ quy tìm vị trí phần tử có giá trị lớn có mảng Cấu trúc liệu giải thuật - HCMUS 2013 44 Cấu trúc liệu giải thuật - HCMUS 2013 ... giải thuật - HCMUS 2013 32 Truy cập th? ?nh ph? ?n cấu trúc: NGAY ngaysinh; ngaysinh.ngay = 10; ngaysinh.thang = 1; ngaysinh .nam = 1990; SINHVIEN sv; … printf(“Ho ten sinh vien : %s”, sv.hoten);... phương pháp/cách th? ??c tập hợp th? ?ng tin liệu khác vào liệu Dễ dàng lưu trữ, truy cập, sử dụng Định nghĩa th? ?nh kiểu liệu riêng Ví dụ: NGAY gồm (nguy? ?n) , thang (nguy? ?n) , nam (nguy? ?n) SINHVIEN... giải thuật - HCMUS 2013 19 Tính tổng S (n) = + + … + n int Tong(int n) { if (n == 0)//điều ki? ?n dừng return 0; return Tong (n- 1) + n; } Cấu trúc liệu giải thuật - HCMUS 2013 20 Viết hàm tính n!