Tài liệu kiểm tra học phần môn cơ sở dữ liệu | Đại học Hoa Sen

Tài liệu kiểm tra học phần môn cơ sở dữ liệu | Đại học Hoa Sen và thông tin bổ ích giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng, ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả

Tổ chức lưu trữ dslk đơn
typedef struct NODE {
DATA info;
NODE* pNext;
} NODE;
typedef struct {
NODE* pHead;
} LIST;
Các thao tác cơ bản
Khởi tạo danh sách rỗng: gán pHead = NULL
void Initialize(LIST &list)
{
list.pHead = NULL;
}
Các thao tác cơ bản
Kiểm tra danh sách có rỗng hay không: kiểm tra pHead có bằng NULL
hay không
Kiểm tra danh sách có đầy hay chưa: không kiểm tra được tính đầy đối
với DSLK
bool IsEmpty(LIST list)
{
if (list.pHead == NULL)
return true;
return false;
}
Duy t danh sách: cho con tr p ch y t đầầu đếến cuốếi danh sách
Ph i thay Process bằầng tến hàm t ng ng ươ
void Process (LIST list)
{
NODE* p = list.pHead;
while (p != NULL) {
p = p->pNext;
}
}
Tìm kiếếm m t phầần t trong danh sách: nếếu tm thầếy tr vếầ con tr p, ng c l i tr vếầ NULL ượ
NODE* Search(LIST list, DATA x)
{
NODE* p = list.pHead;
while (p != NULL)
{
if (p->info == x) break;
p = p->pNext;
}
return p;
}
NODE* Search2(LIST list, DATA x, NODE* &q)
{
NODE* p = list.pHead;
while (p != NULL)
{
if (p->info == x) break;
q = p;
p = p->pNext;
}
return p;
}
Thếm m t phầần t vào danh sách • B1: T o m t phầần t trong b nh
NODE* CreateNode(DATA x) {
NODE* p = new NODE;
if (p != NULL)
{
p->info = x;
p->pNext = NULL;
}
return p;
}
Thếm m t phầần t vào danh sách
• B2: Gằến phầần t v a t o vào danh sách
• Gằến vào đầầu danh sách
NODE* InsertHead(LIST &list, DATA x)
{
NODE* p = CreateNode(x);
if (p != NULL)
{
p->pNext = list.pHead;
list.pHead = p;
}
return p;
}
Thếm m t phầần t vào danh sách
B2: Gằến phầần t v a t o vào danh sách
Gằến vào sau phầần t q
NODE* InsertAfter(LIST &list, NODE* q, DATA x)
{
NODE* p = CreateNode(x);
if (p != NULL)
{
p->pNext = q->pNext;
q->pNext = p;
}
return p;
}
• Xóa m t phầần t kh i danh sách
• Xóa phầần t đ ng sau phầần t q
bool DeleteAfter(LIST &list, NODE* q)
{
if (q != NULL)
{
NODE* p = q->pNext;
if (p != NULL)
{
q->pNext = p->pNext;
delete p;
return true;
}
}
return false;
}
Xóa m t phầần t kh i danh sách
• Xóa phầần t có giá tr X
bool DeleteNode(LIST &list, DATA x)
{
NODE* q = NULL;
NODE* p = Search2(list, x, q);
if (p == NULL) return false;
if (q == NULL)
return DeleteHead(list);
else
return DeleteAfter(list, q);
}
Xóa hếết danh sách
void DeleteAll(LIST &list)
{
while ( DeleteHead(list) );
}
Stack và queue
Kh i t o rốỗng
void Initialize(LIST &s)
{
s.pHead = NULL;
}
Ki m tra có rốỗng hay khống
bool IsEmpty(LIST s)
{
if (s.pHead == NULL)
return true;
return false;
}
Thếm m t phầần t vào đ nh Stack
bool Push(LIST &s, DATA x)
{
NODE* p = InsertHead(s,x);
if (p != NULL)
return true;
return false;
}
Lầếy ra m t phầần t kh i đ nh Stack
DATA POP (LIST &s)
{
if ( !IsEmpty(s) )
{
DATA x = s.pHead->info;
DeleteHead(s);
return x;
}
return NULL;
}
Xem thống tin phầần t đ nh Stack
DATA GetTop(LIST s)
{
if ( !IsEmpty(s) )
{
DATA x = s.pHead->info;
return x;
}
return NULL;
}
L u tr d i d ng DSĐư ướ
#define N 100
typedef struct
{
int front;
int rear;
DATA a[N];
} CQUEUE;
L u tr d i d ng DSLKư ướ
typedef struct NODE
{
DATA info;
NODE* pNext;
} NODE;
typedef struct
{
NODE* pHead;
NODE* pTail;
} LQUEUE;
Kh i t o rốỗng
void Initialize(LQUEUE &q)
{
q.pHead = NULL;
q.pTail = NULL;
}
Ki m tra có rốỗng hay khống
bool IsEmpty(LQUEUE q)
{
if (q.pHead == NULL)
return true;
return false;
}
Thếm m t phầần t vào cuốếi
Queue bool Push(LQUEUE &q, DATA x)
{
NODE* p = InsertTail(q,x);
if (p != NULL)
return true;
return false;
}
Lầếy ra m t phầần t đầầu Queue
DATA Pop(LQUEUE &q)
{
if ( !IsEmpty(q) )
{
DATA x = q.pHead->info;
DeleteHead(q);
return x;
}
return NULL;
}
DATA GetFront(LQUEUE q)
{
if ( !IsEmpty(q) )
{
DATA x = q.pHead->info;
return x;
}
}
return NULL;
}
DATA GetRear(LQUEUE q)
{
if ( !IsEmpty(q) ) {
{
DATA x = q.pTail->info;
return x;
}
return NULL;
}
Bài 11-13: Cây, Cây nh phân, Cây BST, Cây cân bằằng
typedef struct BNODE
{
int info;
BNODE* left;
BNODE* right;
} BNODE;
BNODE* CreateNode(int x)
{
BNODE* p = new BNODE;
if (p != NULL)
{
p->info = x;
p->left = NULL;
p->right = NULL;
}
return p;
}
typedef struct
{
BNODE* root;
} BTREE;
void Initialize(BTREE &tree)
{
tree.root = NULL;
}
void CreateBTree(BNODE* &p)
{
int x;
printf(“\n Nhap vao gia tri cua nut: “);
scanf(“%d”, &x);
if (x == -1) return;
p = CreateNode(x);
if (p != NULL) {
printf(“\n Nhap cay con ben trai cua nut %d: “,x);
CreateBTree(p->left);
printf(“\n Nhap cay con ben phai cua nut %d: “,x);
CreateBTree(p->right);
}
}
void PrintTree(BNODE* p, int k)
{
if (p == NULL)
return;
| 1/20

Preview text:

Tổ chức lưu trữ dslk đơn typedef struct NODE { DATA info; NODE* pNext; } NODE; typedef struct { NODE* pHead; } LIST; Các thao tác cơ bản
Khởi tạo danh sách rỗng: gán pHead = NULL
void Initialize(LIST &list) { list.pHead = NULL; } Các thao tác cơ bản
Kiểm tra danh sách có rỗng hay không: kiểm tra pHead có bằng NULL hay không
Kiểm tra danh sách có đầy hay chưa: không kiểm tra được tính đầy đối với DSLK bool IsEmpty(LIST list) { if (list.pHead == NULL) return true; return false; } Duy t danh sách: cho con tr ệ p ch
ỏ y tạ đầầu đếến cuốếi danh sá ừ ch Ph i tha ả
y Process bằầng tến hàm t ng ươ ng ứ void Process (LIST list) { NODE* p = list.pHead; while (p != NULL) { p = p->pNext; } } Tìm kiếếm m t phầần t ộ trong danh s ử
ách: nếếu tm thầếy tr vếầ con tr ả p, ng ỏ c l ượ i tr ạ vếầ N ả ULL
NODE* Search(LIST list, DATA x) { NODE* p = list.pHead; while (p != NULL) { if (p->info == x) break; p = p->pNext; } return p; }
NODE* Search2(LIST list, DATA x, NODE* &q) { NODE* p = list.pHead; while (p != NULL) { if (p->info == x) break; q = p; p = p->pNext; } return p; } Thếm m t phầần t ộ v
ử ào danh sách • B1: T o m ạ t phầần t ộ trong b ử ộ nhớ NODE* CreateNode(DATA x) { NODE* p = new NODE; if (p != NULL) { p->info = x; p->pNext = NULL; } return p; } Thếm m t phầần t ộ v ử ào danh sách • B2: Gằến phầần t v ử a t ừ o v ạ ào danh sách
• Gằến vào đầầu danh sách
NODE* InsertHead(LIST &list, DATA x) { NODE* p = CreateNode(x); if (p != NULL) { p->pNext = list.pHead; list.pHead = p; } return p; } Thếm m t phầần t ộ v ử ào danh sách B2: Gằến phầần t v ử a t ừ o v ạ ào danh sách
Gằến vào sau phầần t q ử
NODE* InsertAfter(LIST &list, NODE* q, DATA x) { NODE* p = CreateNode(x); if (p != NULL) { p->pNext = q->pNext; q->pNext = p; } return p; } • Xóa m t phầần t ộ kh ử i danh sách ỏ • Xóa phầần t đ ử ng sau phầần t ứ q ử
bool DeleteAfter(LIST &list, NODE* q) { if (q != NULL) { NODE* p = q->pNext; if (p != NULL) { q->pNext = p->pNext; delete p; return true; } } return false; } Xóa m t phầần t ộ kh ử i danh sách ỏ • Xóa phầần t có gi ử á tr X ị
bool DeleteNode(LIST &list, DATA x) { NODE* q = NULL; NODE* p = Search2(list, x, q); if (p == NULL) return false; if (q == NULL) return DeleteHead(list); else return DeleteAfter(list, q); } Xóa hếết danh sách void DeleteAll(LIST &list) { while ( DeleteHead(list) ); } Stack và queue Khởi t o rốỗng ạ void Initialize(LIST &s) { s.pHead = NULL; } Ki m tra c ể ó rốỗng hay khống bool IsEmpty(LIST s) { if (s.pHead == NULL) return true; return false; } Thếm m t phầần t ộ v ử ào đ nh Stack ỉ
bool Push(LIST &s, DATA x) { NODE* p = InsertHead(s,x); if (p != NULL) return true; return false; } Lầếy ra m t phầần t ộ kh ử i đ ỏ nh Stac ỉ k DATA POP (LIST &s) { if ( !IsEmpty(s) ) { DATA x = s.pHead->info; DeleteHead(s); return x; } return NULL; } Xem thống tin phầần t ử đ ở nh Stack ỉ DATA GetTop(LIST s) { if ( !IsEmpty(s) ) { DATA x = s.pHead->info; return x; } return NULL; } L u tr ư ữ d i d ướ ng DSĐ ạ #define N 100 typedef struct { int front; int rear; DATA a[N]; } CQUEUE; L u tr ư ữ d i d ướ ng DSLK ạ typedef struct NODE { DATA info; NODE* pNext; } NODE; typedef struct { NODE* pHead; NODE* pTail; } LQUEUE; Khởi t o rốỗng ạ
void Initialize(LQUEUE &q) { q.pHead = NULL; q.pTail = NULL; } Ki m tra c ể ó rốỗng hay khống bool IsEmpty(LQUEUE q) { if (q.pHead == NULL) return true; return false; } Thếm m t phầần t ộ v ử ào cuốếi
Queue bool Push(LQUEUE &q, DATA x) { NODE* p = InsertTail(q,x); if (p != NULL) return true; return false; } Lầếy ra m t phầần t ộ ử đầầu Queue ở DATA Pop(LQUEUE &q) { if ( !IsEmpty(q) ) { DATA x = q.pHead->info; DeleteHead(q); return x; } return NULL; } DATA GetFront(LQUEUE q) { if ( !IsEmpty(q) ) { DATA x = q.pHead->info; return x; } } return NULL; } DATA GetRear(LQUEUE q) { if ( !IsEmpty(q) ) { { DATA x = q.pTail->info; return x; } return NULL; }
Bài 11-13: Cây, Cây nh phân, Câ ị y BST, Cây cân bằằng typedef struct BNODE { int info; BNODE* left; BNODE* right; } BNODE; BNODE* CreateNode(int x) { BNODE* p = new BNODE; if (p != NULL) { p->info = x; p->left = NULL; p->right = NULL; } return p; } typedef struct { BNODE* root; } BTREE;
void Initialize(BTREE &tree) { tree.root = NULL; }
void CreateBTree(BNODE* &p) { int x;
printf(“\n Nhap vao gia tri cua nut: “); scanf(“%d”, &x); if (x == -1) return; p = CreateNode(x); if (p != NULL) {
printf(“\n Nhap cay con ben trai cua nut %d: “,x); CreateBTree(p->left);
printf(“\n Nhap cay con ben phai cua nut %d: “,x); CreateBTree(p->right); } }
void PrintTree(BNODE* p, int k) { if (p == NULL) return;