Đề 4 (K46)
Câu1 .
a.Đặc tả
//DL.h
// Giải thích về lớp
#ifndef _DL_H_
#define _DL_H_
#include <assert.h>
class node
{
int data;
node * next;
node(int x)
{
data = x; next = NULL;
};
}
class DL
{
public :
DL()
// Khởi tạo danh sách rỗng
// Precondition
// Postcondition
{Head = NULL ; Tail = NULL; length = 0};
DL(const DL & _dl);
// Hàm kiến tạo copy
//
//
~ DL();
// Hàm hủy
b.Cài đặt
void DL :: Insert (int x)
{
node * Q = new node(x);
if (Empty())
{
Head = Q ; Tail = Q; length = 1;
}
node * Pre , P ;
Pre = P = Head;
While (Pre != Tail)
{
if ( x <= P->data ) break;
Pre = P;
P = P->next;
}
if (P == Head) // Chèn vào đầu
{
Q -> next = Head;
Head = Q;
}
else if (P == NULL) // Chèn vào cuối
{
Pre ->next = Q;
}
else //Chèn vào giữa
{
Q ->next = P;
Pre ->next = Q;
}
//
HUT (node * _element , int n)
// Xây dựng hàng ưu tiên từ n phần từ lưu trong mảng _element
~ HUT ();
// Hàm hủy
//
//
HUT & operator = (const HUT & _dl);
// Toán tử gán
//
//
bool Empty() const ;
// Xác định xem danh sách có rỗng kô
// Precondition :
// Postcondition: Trả về true nếu danh sách rỗng
int Length() const;
//
void Insert(node _data);
//
//
//
node & FindMin() const;
//
//
//
node & DeleteMin();
// Loại đối tượng có độ ưu tiên nhỏ nhất
//
// Trả về đối tượng có độ ưu tiên nhỏ nhất
private :
// Precondition
// Postcondition
ChainHash (const ChainHash & _dl);
// Hàm kiến tạo copy
//
//
~ ChainHash ();
// Hàm hủy
//
//
ChainHash & operator = (const ChainHash & _dl);
// Toán tử gán
//
//
bool Search(keyType k , Item & I) const;
//
//
//
void Insert(const item & _data);
//
//
//
void & Delete (keyType k);
// Loại đối tượng có độ ưu tiên nhỏ nhất
//
// Trả về đối tượng có độ ưu tiên nhỏ nhất
private :
struct CELL
{
item data;