BÀI TẬP THỰC HÀNH 04 Danh sách liên kết Ngăn xếp Hàng đợi Bài tập này sẽ được làm trong 2 tuần 1 Bài tập 1 1 Danh sách liên kết Mỗi Node của danh sách liên kết (DSLK) đơn được định nghĩa như sau struc[.]
Trang 1BÀI TẬP THỰC HÀNH 04
Danh sách liên kết - Ngăn xếp - Hàng đợi
Bài tập này sẽ được làm trong 2 tuần
1 Bài tập
1.1 Danh sách liên kết
Mỗi Node của danh sách liên kết (DSLK) đơn được định nghĩa như sau:
struct NODE{
int key;
NODE* pNext;
};
Sinh viên tiến hành cài đặt các hàm sau:
• NODE* CreateNode{int data} //Khởi tạo 1 node
• bool AddHead(NODE* &pHead, int Data) //Thêm 1 Node vào đầu DSLK có sẵn
• bool AddTail(NODE* pHead, int Data) // Thêm 1 Node vào cuối DSLK có sẵn
• void RemoveHead(NODE* &pHead) //Xoá Node đầu tiên của DSLK
• void RemoveTail(NODE* pHead) //Xoá Node cuối cùng của DSLK
• void RemoveAll(NODE* &pHead) //Xoá toàn bộ DSLK
• void PrintList(NODE* pHead) //In ra toàn bộ DSLK
• int SumList(NODE* pHead) //Tính tổng giá trị các phần tử của DSLK
• int CountList(NODE* pHead) //Đếm số lượng phần tử của DSLK
• int MaxList(NODE* pHead) //Tìm phần tử có giá trị lớn nhất trong DSLK
1
Trang 2Bùi Huy Thông - Lê Thanh Tùng CTDL>
1.2 Ngăn xếp - Hàng đợi
- Cấu trúc Ngăn xếp được định nghĩa như sau:
struct Stack{
NODE* pHead;
int MAX_DEPTH;
};
Sinh viên tiến hành cài đặt các thao tác sau:
• void push(Stack S, int a)
• int pop(Stack S)
• bool isEmpty(Stack S)
• bool isFull(Stack S)
• int sizeof(Stack S)
- Cấu trúc Hàng đợi được định nghĩa như sau:
struct Queue{
NODE* pHead;
int MAX_LENGTH;
};
• void enQueue(Queue Q, int a)
• int deQueue(Queue Q)
• bool isEmpty(Queue Q)
• bool isFull(Queue Q)
• int sizeof(Queue Q) [Không bắt buộc: Sinh viên cài đặt các cấu trúc dữ liệu ở trên và hàm tương ứng sử dụng Lập trình Hướng đối tượng]
2 Quy định nộp bài
• Sinh viên nộp bài trong thư mục MSSV bao gồm thư mục Code chưa mà nguồn và file Report.pdf (nếu có)
• Sinh viên nộp bài dưới dạng MSSV.rar(.zip)
• Các bài làm giống nhau sẽ bị 0 điểm môn học