Bài giảng Cấu trúc dữ liệu 1: Chương 3A - Huỳnh Cao Thế Cường
lượt xem 2
download
Chương 3 trang bị cho người học những kiến thức về cấu trúc dữ liệu động. Các nội dung chính được trình bày trong chương này gồm có: Con trỏ (Pointers), các phép tính về con trỏ, con trỏ và mảng, con trỏ dùng như mảng, con trỏ và cấu trúc, con trỏ vạn năng, con trỏ kép.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cấu trúc dữ liệu 1: Chương 3A - Huỳnh Cao Thế Cường
- TRƯỜNG ĐẠI HỌC AN GIANG KHOA KỸ THUẬT CÔNG NGHỆ MÔI TRƯỜNG CẤU TRÚC DỮ LIỆU 1 Giảng viên phụ trách: HUỲNH CAO THẾ CƯỜNG Bộ môn Tin học email: hctcuong@agu.edu.vn 1 1
- Chương 3. CẤU TRÚC DỮ LIỆU ĐỘNG Đặt vấn đề Kiểu dữ liệu Con trỏ Danh sách liên kết (link list) Danh sách đơn (xâu đơn) Tổ chức danh sách đơn theo cách cấp phát liên kết Một số cấu trúc dữ liệu dạng danh sách liên kết khác Danh sách liên kết kép Hàng đợi hai đầu (double-ended queue) Danh sách liên kết có thứ tự (odered list) Danh sách liên kết vòng Danh sách có nhiều mối liên kết Danh sách tổng quát 2
- Đặt vấn đề Biến không động (biến tĩnh, biến nửa tĩnh) Được khai báo tường minh Tồn tại trong phạm vi khai báo Được cấp phát vùng nhớ trong vùng dữ liệu (Data) hoặc là Stack Kích thước không thay đổi trong suốt quá trình sống 3
- Đặt vấn đề Biến động Biến không được khai báo tường minh Có thể cấp phát hay giải phóng bộ nhớ khi cần Vùng nhớ của biến được cấp phát trong Heap Kích thước có thể không thay đổi trong quá trình sống 4
- Con trỏ (Pointers) Khai báo: Dạng *Con trỏ char *c int *i; float *f; typedef int *intPointer; intPointer p; hoặc int *p; Ví dụ: Lập chương trình định nghĩa một số nguyên có giá trị bằng 1 và dùng một con trỏ p để chỉ số nguyên này. Sau đó in lên màn hình giá trị của số nguyên này bằng 2 cách • Không dùng con trỏ • Thông qua con trỏ 5
- Con trỏ (tt) #include void main() { int *p, n=1; printf("n=%d \n", n); p=&n; printf("n=%d \n", *p); //p } Kết quả: n=1; n=1; 6
- Con trỏ - Các phép tính về con trỏ void main() Kết quả: { char *a; C[1]=o char c[]="Pointers"; After a+1, *a=P a=&c[0]; After a++, *a=o printf("c[1]=%c \n", *(a+1)); printf("Apter a+1, *a=%c \n", *a); a++; printf("Apter a+1, *a=%c \n", *a); } 7
- Con trỏ - Các phép tính về con trỏ void main() { char *a; Kết quả: char c[]="Pointers"; int i; Pointer a=c; s for(i=0; i
- Con trỏ - Các phép tính về con trỏ Lưu ý: Ví dụ: char *cp; int *ip; double *dp; Kết quả: giá trị con trỏ tăng lên bao nhiêu đơn vị? cp++ ip++ dp+=5 9
- Con trỏ và mảng Khai báo: int *p; int a[4]={1,2,3,4}; p=&a[0]; p=a; print("a[2]=%d", *(p+2)); p=p+2; print("a[2]=%d", *p); hay p=a; print("a[2]=%d", *(p+=2)); 10
- Con trỏ dùng như mảng int *p={1,2,3,4}; print("%d", *(p+2)); char *p="con tro"; char *p[3]=["Fortran", "Pascal", "Lisp"]; Khi đó: p[0]; p[1]; p[2]; printf("%s", p[2]); 11
- Con trỏ dùng như mảng Ví dụ: Lập chương trình dùng con trỏ để định nghĩa mảng 3 dã chữ "Fortral", "Pascan", "List". Sửa chúng thành "Fortran", "Pascal", "Lisp" và dùng printf để kiểm tra kết quả. 12
- Con trỏ dùng như mảng include ; void main() { char *p[3]=["Fortral", "Pascan", "List"]; *(p[0]+6)='n'; *(p[1]+5)='l'; *(p[2]+3)='p'; printf("%s \n %s \n %s\n", p[0], p[1], p[2]); } 13
- Con trỏ dùng như mảng Ví dụ: Lập chương trình nhận từ bàn phím một số lượng từ 3 đến 10 dữ liệu số nguyên. Sau đó dùng lệnh printf để đưa chúng lên màn hình. Dùng 2 cách • Cách dùng mảng • Cách dùng con trỏ kết hợp với malloc 14
- Con trỏ dùng như mảng #define MAX =10; void main() { int a[MAX], i, n; printf("So luong du lieu"); scanf("%d", &n); for(i=0; i
- Con trỏ dùng như mảng void main() { int *p, i, n; printf("So luong du lieu"); scanf("%d", &n); p =(int*) malloc(n*sizeof(int)); //Hoặc p =(int*) calloc(n,sizeof(int)); for(i=0; i
- Con trỏ và cấu trúc Ví dụ: Định nghĩa cấu trúc có các thành phần: • Name: mảng ký tự • Age: kiểu số nguyên Viết chương trình nhập vào danh sách 3 người có thông tin như trên, sau đó in thông tin lên màn hình. 17
- Con trỏ và cấu trúc void main() { typedef struct person_info{ char name[10]; int age; } PERSON_INFO; int n; PERSON_INFO list[3], *p; p=list; for(i=0; iname); printf("Tuoi du lieu %d =",i); scanf("%s", (p+i)->age); } for(i=0; iname, (p+i)->age); } 18
- Con trỏ vạn năng Là con trỏ có thể chỉ bất kỳ loại dữ liệu nào (chữ, số nguyên, số thực, …) trong chương trình Con trỏ vạn năng được định nghĩa như sau void *p; 19
- Con trỏ vạn năng void main() { void *p; char c='a'; int n='1'; float r =0.5; p=&c; printf("p= %c\n", *((char*)) p); p=&n; printf("p= %d\n", *((int*)) p); p=&r; printf("p= %1.1f\n", *((float*)) p); } 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cấu trúc dữ liệu & thuật toán: Chương 3 - Nguyễn Đức Nghĩa
0 p | 491 | 166
-
Bài giảng Cấu trúc dữ liệu cơ bản và giải thuật - Chương 1
9 p | 258 | 29
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 180 | 17
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3 - Đỗ Bích Diệp
28 p | 121 | 10
-
Bài giảng Cấu trúc dữ liệu: Chương 10 - Nguyễn Xuân Vinh
31 p | 96 | 10
-
Bài giảng Cấu trúc dữ liệu 1: Chương 1 - Lương Trần Hy Hiến
7 p | 164 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 8: Cấu trúc dữ liệu ngăn xếp
28 p | 86 | 9
-
Bài giảng Cấu trúc dữ liệu giải thuật: Các kiểu dữ liệu trừu tượng cơ bản - Cấu trúc dữ liệu tuyến tính
92 p | 118 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây đỏ đen - Bùi Tiến Lên
25 p | 92 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 17: Cấu trúc dữ liệu dạng cây
21 p | 77 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu
193 p | 63 | 7
-
Bài giảng Cấu trúc dữ liệu: Chương Giới thiệu - Nguyễn Xuân Vinh
8 p | 113 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 180 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 108 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Chương 1: Tổng quan về giải thuật và cấu trúc dữ liệu
10 p | 75 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các khái niệm cơ bản
23 p | 49 | 3
-
Bài giảng Cấu trúc dữ liệu giải thuật: Cấu trúc dữ liệu
17 p | 53 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn