Professional Documents
Culture Documents
Bài làm
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdbool.h>
typedef struct {
char Hoten[30];
int MaSV;
float DiemTB;
} Data;
//------------------------------------//
Data infor;
} Node;
//------------------------------------//
Node *pHead;
Node *pTail;
int spt;
} List;
List L;
//------------------------------------//
L->pHead = NULL;
L->pTail = NULL;
L->spt = 0;
//------------------------------------//
int emptyList(List L) {
//------------------------------------//
Node *pp;
pp = (Node*)malloc(sizeof(Node));
//-------------------------//
pp->infor.MaSV = Ma;
strcpy(pp->infor.Hoten,Ten);
pp->infor.DiemTB = Diem;
//-------------------------//
pp->link = NULL;
if(emptyList(*L)){
L->pHead = pp;
L->pTail = pp;
else {
pp->link = L->pHead;
L->pHead = pp;
L->spt++;
Node *p;
p = L->pHead;
while (p!=NULL) {
printf("\nMa SV: %d, Ten SV: %s, Diem TB: %1.1f", p->infor.MaSV, p-
>infor.Hoten,p->infor.DiemTB);
p = p->link;
}
int main() {
Init_List(&L);
Process_List(&L);
printf("\n");
Bài 5: Thêm một nút vào đầu/cuối danh sách liên kết đơn/kép
Bài làm
#include<stdio.h>
#include<malloc.h>
//------------------------------------//
Data infor;
} Node;
//------------------------------------//
Node *pHead;
Node *pTail;
int spt;
} List;
//------------------------------------//
List L;
//------------------------------------//
L->pHead = NULL;
L->pTail = NULL;
L->spt = 0;
//------------------------------------//
int emptyList(List L) {
//------------------------------------//
Node *pp;
pp = (Node*)malloc(sizeof(Node));
pp->infor = x;
pp->link = NULL;
if(emptyList(*L)){
L->pHead = pp;
L->pTail = pp;
else {
pp->link = L->pHead;
L->pHead = pp;
L->spt++;
//------------------------------------//
Node *pp;
pp = (Node*) malloc(sizeof(Node));
pp->infor = x;
pp->link = NULL;
if(emptyList(*L)) {
L->pHead = pp;
L->pTail = pp;
else {
L->pTail->link = pp;
L->pTail = pp;
L->spt++;
//------------------------------------//
Bài 6: Thêm một nút mới vào sau nút nào đó trong danh sách liên kết đơn/kép
Bài làm
Node *pp;
if(NULL==q)
return;
else {
pp = (Node*) malloc(sizeof(Node));
pp->infor = x;
pp->link = q->link;
q->link = pp;
if(q==L->pTail)
L->pTail = pp;
L->spt++;
//-----------------------------------------------------------//
void insert_After(List *L, Node *q, int Ma, char *Ten, float Diem) {
Node *pp;
if(NULL==q)
return;
else {
pp = (Node*) malloc(sizeof(Node));
//-------------------------//
pp->infor.MaSV = Ma;
strcpy(pp->infor.Hoten,Ten);
pp->infor.DiemTB = Diem;
//-------------------------//
pp->link = q->link;
q->link = pp;
if(q==L->pTail)
L->pTail = pp;
L->spt++;
Bài 8: Cho danh sách liên đơn/kép đã được sắp theo một trường
nào đó. Ví dụ theo điểm trung bình. Thêm một nút vào danh sách
liên kết đơn sao cho danh sách mới được tạo vẫn sắp xếp
Bài làm
Node* pp=L->pHead;
/*Neu ds rong hoac nut can them nho hon nut dau*/
new_node->link = L->pHead;
L->pHead = new_node;
}
else {
pp = pp->link;
new_node->link = pp->link;
pp->link = new_node;
L->spt++;