/*========== Khai báo danh sách liên kết lưu trữ các số nguyên ==============*/
typedef int ElementType;
typedef struct Node Node;
typedef struct Node
{
ElementType Element;
Node* Next;
}
Node;
typedef Node* Position;
typedef Position List;
/*========== Kết thúc khai báo ==================*/
// Tạo danh sách rỗng
void MakeNull_List (List *Header)
{
(*Header) = (Node*)malloc(sizeof(Node));
(*Header)->Next = NULL;
}
// Kiểm tra danh sách rỗng, hàm trả về giá trị 1 nếu danh sách rỗng. ngược lại trả về giá trị 0
int Empty_List (List L)
{
return (L->Next == NULL);
}
// Hàm trả về nội dung phần tử tại vị trí P trong danh sách
ElementType Retrieve (Position P, List L)
{
if (P->Next != NULL)
return P->Next->Element;
}
// Hàm trả về vị trí đầu ds
Position First(List L)
{
return L;
}
// Hàm trả về vị trí cuối ds
Position EndList(List L)
{
Position P;
P = First(L);
while (P->Next != NULL)
{
P = P->Next;
}
return P;
}
// Thêm phần tử có nội dung X vào vị trí P trong danh sách L
void Insert_List (ElementType X, Position P, List *L)
{
Position T;
T = (Node*)malloc(sizeof(Node));
T->Element = X;
T->Next = P->Next;
P->Next = T;
}
// Xoá phần tử tại vị trí P trong danh sách
void Delete_List (Position P, List *L)
{
Position T;
if (P->Next !=NULL)
{
T->Next = P->Next;
P->Next = P->Next->Next;
Free(T);
}
else printf("\nLoi ! Danh Sach rong khong the xoa");
}
// In danh sách L ra màn hình
void Print_List (List L)
{
Position P;
P = First(L);
printf("\n Bat dau in danh sach");
while( P != EndList(L))
{
printf("\n%d",Retrieve(P, L));
P = P->Next;
}
printf("\n Ket thuc in danh sach");
}
/* Hàm tìm vị trí phần tử đầu tiên có nội dung X trong danh sách L
Nếu không tìm thấy, hàm trả về vị trí EndList */
Position Lacate(ElementType X, List L)
{
Position P;
int found = 0;
while ((P->Next != NULL) && (found ==0))
{
if (P->Next->Element == X)
found = 1;
else
P = P->Next;
}
return P;
}
// Nhập danh sách từ bàn phím
void Read_List (List *L)
{
int i,N;
ElementType X;
Position P;
P = First(*L);
printf("\nNhap vao so phan tu trong danh sach: ");
scanf("%d",&N);
for (i = 0; i < N; i++)
{
printf("\nPhan tu thu %d: ",i+1);
scanf("%d",&X);
Insert_List(X, EndList(*L), L);
}
}
Xin hướng dẫn sửa lỗi code bên dưới (dùng xcode)
Sửa gì thế bạn ? Sửa chỗ nào ? Sửa lỗi code hay là sửa lại cách viết code tối ưu hơn ?
Bạn trình bày cụ thể ra thì mọi người mới biết mà trả lời bạn ơi :))
3 Likes
xin hướng dẫn sửa lỗi code ạ, e không biết lỗi ở đâu
Khi lỗi xảy ra thì phải có “hiện tượng” gì đó thì bạn mới biết là có lỗi chứ!
3 Likes