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ả
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;