Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 80 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
80
Dung lượng
906 KB
Nội dung
KHOA KHOA HỌC MÁY TÍNH – BỘ MƠN LẬP TRÌNH BÀI GIẢNG CẤU TRÚC DỮ LIỆU (BẬC CAO ĐẲNG) Chương2: CẤU TRÚC DỮ LIỆU DANH SÁCH Nguyễn Thanh Cẩm NỘI DUNG TRÌNH BÀY Danh sách Danh sách đặc Danh sách liên kết Ngăn xếp Hàng đợi 1 Danh sách a Định nghĩa b Các phép toán danh sách Danh sách a Định nghĩa Danh sách tập hợp hữu hạn phần tử kiểu (Elementtype) : a1, a2, …, an (n>=1) với tính chất: biết biết ai+1 (0Rear=-1; } Hàng đợi c Tổ chức theo danh sách đặc Kiểm tra hàng rỗng int Empty_Queue(Queue Q) { return Q.Front==-1; } Hàng đợi c Tổ chức theo danh sách đặc Kiểm tra đầy Hàng đầy số phần tử có hàng số phần tử mảng int Full_Queue(Queue Q) { return (Q.Rear-Q.Front+1)==MaxLength; } Hàng đợi c Tổ chức theo danh sách đặc Xóa phần tử khỏi hàng Khi xóa phần tử đầu hàng ta cần cho front tăng lên Nếu front > rear hàng thực chất hàng rỗng, nên ta khởi tạo lại hàng rỗng (tức đặt lại giá trị front = rear =-1) Hàng đợi c Tổ chức theo danh sách đặc Xóa phần tử khỏi hàng void O_Queue(Queue *Q,int *x){ if (!Empty_Queue(*Q)) { *x=Q->Elements[Q->Front]; Q->Front=Q->Front+1; if (Q->Front>Q->Rear) Make_Queue(Q); } else coutRear==MaxLength-1) { for(int i=Q->Front;iRear;i++) Q->Elements[i-Q->Front]=Q->Elements[i]; Q->Rear=MaxLength - Q->Front-1; Q->Front=0; } Q->Rear=Q->Rear+1; Q->Elements[Q->Rear]=X; } else coutRear=NULL; } Hàng đợi d Tổ chức theo danh sách liên kết Kiểm tra hàng rỗng Hàng rỗng Front trỏ đến NULL int Empty_Queue(Queue Q) { return (Q.Front==NULL); } Hàng đợi d Tổ chức theo danh sách liên kết Thêm phần tử vào hàng void I_Queue(int X, Queue *Q) {Node *p; if(Q->Rear==NULL) { p=(Node*)malloc(sizeof(Node)); p->Element=X;p->Next=NULL; Q->Front=Q->Rear=p; }else {p=(Node*)malloc(sizeof(Node)); p->Element=X;p->Next=NULL; Q->Rear->Next=p; Q->Rear=p; } Hàng đợi d Tổ chức theo danh sách liên kết Xóa phần tử khỏi hàng void O_Queue(Queue *Q,int *x) { if (!Empty_Queue(*Q)) { *x=Q->Front->Element; Position T; T=Q->Front; Q->Front=Q->Front->Next; free(T); } else cout