Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
508,5 KB
Nội dung
Câu hỏi kiểm tra Trình bày cách khai báo hàng đợi (queue)? Trả lời typedef struct { int front,rear; int nodes[MAXSIZE]; } queue; Bi 3. DANH SÁCH LIÊN KẾT ĐƠN (LINKED LIST) CBGD: Trần Việt Khánh MỤC TIÊU • Sau bi học ny, sinh viên có khả năng: Trình by được định nghĩa danh sách liên kết đơn Ci đặt được danh sách liên kết đơn Vận dụng danh sách liên kết đơn vo công tác quản lý (quản lý sinh viên, quản lý tuyến xe lửa, ) NỘI DUNG I/ Định nghĩa II/ Ci đặt danh sách liên kết đơn 1. Khai báo cấu trúc của một nút trong danh sách liên kết đơn 2. Các tác vụ trên danh sách liên kết đơn I/ Định nghĩa Danh sách liên kết đơn là một danh sách bao gồm nhiều nút liên kết với nhau, mỗi nút là một cấu trúc có hai trường: - Trường info chứa nội dung thật sự của nút. - Trường next là con trỏ cấu trúc chỉ nút kế tiếp trong danh sách. l Hình vẽ minh họa danh sách liên kết đơn NULL Khai báo mỗi nút là một mẫu tin có hai trường là info và next. - Trường info: chứa nội dung của nút. - Trường next: là con trỏ chỉ nút kế tiếp trong danh sách II/ Cài đặt danh sách liên kết đơn 1. Khai báo cấu trúc một nút // Khai báo cấu trúc của một nút typedef struct node { node *next; int info; } node; // Khai báo kiểu con trỏ chỉ đến nút typedef struct node *list; • Khởi tạo danh sách rỗng void CreateList(list &l) { l=NULL; } 2. Các tác vụ trên danh sách liên kết đơn l NULL • Kiểm tra danh sách có bị rỗng không bool EmptyList(list l) { return ( l == NULL); } Minh họa đoạn code trên: l NULL 1 2 3 4 giả sử nút cần tìm là x =3 Tìm kiếm phần tử x trong danh sách list SearchList(list l, int x) { list p; p=l; while (p!=NULL && p->info!=x) p=p->next; return p; } • Tìm vị trí của nút trước nút cần xóa hoặc thêm trong danh sách list SearchPrevousNode(list l, int x) { list p,c; bool stop=false; p=NULL; c=l; while( c!=NULL && !stop) { if(c->info != x) { p=c; c= c->next; } else stop=true; } return p; } l 1 2 3 4 NULL Minh họa đoạn code trên: giả sử nút cần xóa x = 4 X • Thêm một nút vo danh sách ( có 3 trường hợp) + Trường hợp 1: thêm một nút vào đầu danh sách (p==NULL) NULL l Nút newp newp->next = l; l = newp; Đây là đoạn code của trường hợp trên if(p==NULL)// chèn nút newp ở đầu danh sách { newp->next=l; l = newp; }