Chương 3: Danh sách liên kết pps

47 298 0
Chương 3: Danh sách liên kết pps

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 3.1. Kiểu dữ liệu con trỏ 3.2. Danh sách liên kết (link list) 3.3. Danh sách liên kết ñơn 3.4. Sắp xếp danh sách 1 Chương 3: DANH SÁCH LIÊN KẾT Khoa CNTT Trường TC TÂY NAM Á © Dương Thành Phết-www.thayphet.net 2 3.1. Kiểu Dữ Liệu Con Trỏ © Dương Thành Phết-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á 3.1.1. Biến không ñộng 3.1.2. Kiểu con trỏ 3.1.3. Biến ñộng 3 © Dương Thành Phết-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á Dùng ñề lưu trữ những ñối tượng dữ liệu ñược sử dụng không có nhu cầu thay ñổi và kích thước, số lượng . . . • ðược khai báo tường minh • Tồn tại trong phạm vi khái báo • Kích thước không thay ñổi trong suốt quá trình sống Ví dụ: int a; char b[10]; 3.1.1. Biến không ñộng 4 © Dương Thành Phết-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á Kiểu con trỏ là kiểu cơ sở dùng lưu ñịa chỉ của một ñối tượng dữ liệu khác. Biến thuộc kiểu con trỏ là biến mà giá trị của nó là ñịa chỉ một vùng nhớ của một biến hoặc là giá trị Null. Tùy vào loại con trỏ gần (near pointer) hay con trỏ xa (far pointer) mà kiểu dữ liệu con trỏ có các kích thước khác nhau: + Con trỏ gần: 2 bytes + Con trỏ xa: 4 bytes 3.1.2. Kiểu con trỏ 5 © Dương Thành Phết-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á Cú pháp ñịnh nghĩa một kiểu con trỏ typedef <kiểu con trò> *<kiểu cơ sở>; Ví dụ: typedef int *intpointer; inpointer p; Hay int *p; Các thao tác: - Khi 1 biến con trỏ p lưu ñịa chỉ của ñối tượng x, ta nói “p trỏ x” - Gán ñịa chỉ của biến cho con trỏ p: p=&<tên biến> -Truy xuất nội dung của ñối tượng do p trỏ ñến *p 6 © Dương Thành Phết-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á c. Ví dụ: void main() { int a,b,*pa,*pb; a=2; b=3; cout<<"\nGia tri cua bien a="<<a; cout<<"\nGia tri cua bien b="<<b; pa=&a; pb=&b; cout<<"\nDia chi cua o nho con tro pa tro toi="<<pa; cout<<"\nDia chi cua o nho con tro pb tro toi="<<pb; cout<<"\nNoi dung cua o nho con tro pa tro toi="<<*pa; cout<<"\nNoi dung cua o nho con tro pb tro toi="<<*pb; *pa=20; /* Thay doi giá tr cua *pa*/ *pb=20; /* Thay doi giá tri cua *pb*/ cout<<"\nGia tri moi cua bien a="<<a; cout<<"\nGia tri moi cua bien b="<<b; } 7 © Dương Thành Phết-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á Trong trường hợp, tại thời ñiểm biên dịch không thể xác ñịnh trước kích thước chính xác của ñối tượng dữ liệu(do chúng phụ thuộc vào ngữ cảnh). Các ñối tượng dữ liệu này ñược khai báo như biến ñộng. Biến ñộng là những biến thỏa: 3.1.3. Biến ñộng  Không ñược khai báo tường minh.  ðược cấp phát/giải phóng bộ nhớ khi yêu cầu.  Các biến này không theo qui tắc phạm vi.  Vùng nhớ của biến ñược cấp phát trong Heap.  Kích thước thay ñổi trong quá trình sống. 8 © Dương Thành Phết-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á Các thao tác trên biến ñộng: Tạo biến ñộng và cho con trỏ p trỏ ñến: Các hàm cấp phát bộ nhớ: void* malloc(size); // trả về con trỏ chỉ ñến một vùng // nhớ size byte vừa ñược cấp phát. void* calloc(n,size);// trả về con trỏ chỉ ñến một vùng // nhớ vừa ñược cấp phát gồm n //phần tử,mỗi phần tử có kích //thước size byte new // hàm cấp phát bộ nhớ trong C++ 9 © Dương Thành Phết-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á Hủy một biến ñộng do p chỉ ñến: Hàm free(p): Huỷ vùng nhớ cấp phát bởi hàm malloc do p trỏ tới Hàm delete p: huỷ vùng nhớ cấp phát bởi hàm new do p trỏ tới 10 © Dương Thành Phết-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á Ví dụ: int* p1, p2; //Cấp phát vùng nhớ cho 1 biến ñộng kiểu int p1 = (int*)malloc(sizeof(int)); //ðặt giá trị 5 cho biến ñộng p1 p1* = 5; //Cấp phát biến ñộng kiểu mảng 10 p.tử kiểu int p2 = (int*)calloc(10, sizeof(int)); //ðặt giá trị 0 cho phần tử thứ 4 của mảng p2 (p2+3)* = 0; free(p1); free(p2); [...]... ki u t ch c liên k t gi a các ph n t Danh sách liên k t ñơn Danh sách liên k t kép Danh sách liên k t vòng 16 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á 3.3 Danh Sách Liên K t ðơn 3.3.1 T ch c danh sách ñơn theo cách c p phát liên k t 3.3.2 Các thao tác cơ b n trên danh sách ñơn 17 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á 3.3.1 T ch c danh sách ñơn theo... t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á Duy t danh sách Duy t danh sách là thao tác thư ng ñư c th c hi n khi có nhu c u x lý các ph n t c a danh sách như: - Ð m các ph n t c a danh sách, - Tìm t t c các ph n t tho ñi u ki n, - Hu toàn b danh sách (và gi i phóng b nh ) Thu t toán : Bư c 1: p = Head; //Cho p tr ñ n ph n t ñ u DS Bư c 2: Trong khi (Danh sách chưa h t) th c hi n B21 : X lý ph n t p; B22...3.2 Danh Sách Liên K t 3.2.1 Ð nh nghĩa 3.2.2 Các hình th c t ch c danh sách 11 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á 3.2.1 Ð nh nghĩa Ki u danh sách Tx g m các ph n t thu c ki u T ñư c ñ nh nghĩa là: Tx = trong ñó: Vx = {t p h p có th t các ph n t ki u T ñư c móc n i v i nhau theo trình t tuy n tính}; Ox = {T o danh sách; Tìm 1 ph n t trong danh sách; Chèn... chóng ñ n m t ph n t b t kỳ trong danh sách, nhưng l i h n ch v m t s d ng b nh b lãng phí 14 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á M i liên h gi a các ph n t th hi n tư ng minh: M i ph n t ngoài các thông tin còn ch a m t liên k t (ñ a ch ) ñ n ph n t k trong danh sách nên còn ñư c g i là danh sách móc n i V i hình th c này các ph n t trong danh sách không c n ph i lưu tr k... theo trình t tuy n tính}; Ox = {T o danh sách; Tìm 1 ph n t trong danh sách; Chèn m t ph n t vào danh sách; Hu m t ph n t kh i danh sách ; Li t kê danh sách, S p x p danh sách } 12 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á Ví du: H sơ các h c sinh c a m t trư ng ñư c t ch c thành danh sách g m nhi u h sơ c a t ng h c sinh; s lư ng h c sinh trong trư ng có th thay ñ i do v y c n... thao tác tìm h sơ c a m t h c sinh, in danh sách h sơ 13 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á 3.2.2 Các hình th c t ch c danh sách M i liên h gi a các ph n t ñư c th hi n ng m: M i ph n t trong danh sách ñư c ñ c trưng b ng ch s C p ph n t xi, xi+1 ñư c xác ñ nh là k c n V i hình th c t ch c này, các ph n t c a danh sách ph i lưu tr liên ti p trong b nh , công th c xác... vào ñ u danh sách AddFirst(l, new_ele); } void InsertAfter(LIST &l,NODE *q, Data x){ NODE* new_ele = GetNode(x); if (new_ele ==NULL) return NULL; if ( q!=NULL) { new_ele->pNext = q->pNext; q->pNext = new_ele; if(q == l.pTail) l.pTail = new_ele; }else //chèn vào ñ u danh sách AddFirst(l, new_ele); } © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á Tìm m t ph n t trong danh sách ñơn... t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á 3.3.1 T ch c danh sách ñơn theo cách c p phát liên k t M i ph n t là m t c u trúc ch a 2 thông tin : - Thành ph n d li u: Lưu tr các thông tin v b n thân ph n t - Thành ph n m i liên k t: lưu tr ñ a ch c a ph n t k ti p trong danh sách, ho c lưu tr giá tr NULL n u là ph n t cu i danh s ách Ta có ñ nh nghĩa t ng quát typedef struct tagNode { Data Info; // Data là... trên danh sách ñơn Gi s có các ñ nh nghĩa: typedef struct tagNode { Data Info; struct tagNode* pNext; }NODE; typedef struct tagList { NODE* pHead; NODE* pTail; }LIST; NODE *new_ele; // gi ñ a ch c a m t ph n t m i ñư c t o Data x; // lưu thông tin v m t ph n t s ñư c t o 21 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á Chèn m t ph n t vào ñ u danh sách Thu t toán : B t ñ u: N u Danh. .. t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á Ví d : Ð nh nghĩa danh sách ñơn lưu tr h sơ SV typedef struct SinhVien { char Ten[30]; int MaSV; }SV; typedef struct SinhvienNode { SV Info; struct SinhvienNode* pNext; }SVNode; 19 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á N u bi t ñư c ñ a ch c a ph n t ñ u tiên trong danh sách ñơn thì có th d a vào thông tin pNext c a nó ñ truy xu . TC TÂY NAM Á Có các kiểu tổ chức liên kết giữa các phần tử.  Danh sách liên kết ñơn  Danh sách liên kết kép  Danh sách liên kết vòng 17 3.3. Danh Sách Liên Kết ðơn © Dương Thành Phết-www.thayphet.net Khoa. 1 3.1. Kiểu dữ liệu con trỏ 3.2. Danh sách liên kết (link list) 3.3. Danh sách liên kết ñơn 3.4. Sắp xếp danh sách 1 Chương 3: DANH SÁCH LIÊN KẾT Khoa CNTT Trường TC TÂY NAM Á © Dương. tuyến tính};  Ox = {Tạo danh sách; Tìm 1 phần tử trong danh sách; Chèn một phần tử vào danh sách; Huỷ một phần tử khỏi danh sách ; Liệt kê danh sách, Sắp xếp danh sách } 13 © Dương Thành

Ngày đăng: 26/07/2014, 03:22

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan