Bài 1: Xét một cấu trúc dữ liệu gọi là ArrayList bao gồm một danh sách liên kết đơn để lưu các phần tử, Head và Tail là các con trỏ tương ứng chỉ đến phần tử đứng đầu cà phàn tử cuối của danh sách và Size để chỉ số lượng phần tử trong danh sách.
Các anh chi hãy (đề nghị sử dụng đúng tên hàm/ thủ tục)
Câu 1: Viết các khai báo cho CTDL ArrayList trên để lưu các phần tử có kiểu dữ liệu là số nguyên.
Câu 2: Viết thủ tục Init để tạo một ArrayList rỗng.
Câu 3: Viết hàm Size để trả về kích thước hiện hành của một ArrayList.
Câu 4: Viết thủ tục Put để thêm một phần tử vào cuối ArrayList.
Câu 5: Viết hàm Get để trả về phần tử ở vị trí thứ i của một ArrayList.
Câu 6: Viết thủ tục Remove để xóa phần tử ở vị trí thứ i của một ArrayList.
(Vị trí I xem như hợp lệ đối với hàm Get và thủ tục Remove)
Giải:
/*
De thi sau dai hoc 2010
bai 1:*/
Admin xem dùm bài này mình giải có đúng ko? Góp ý dùm e he! Thanks
Các anh chi hãy (đề nghị sử dụng đúng tên hàm/ thủ tục)
Câu 1: Viết các khai báo cho CTDL ArrayList trên để lưu các phần tử có kiểu dữ liệu là số nguyên.
Câu 2: Viết thủ tục Init để tạo một ArrayList rỗng.
Câu 3: Viết hàm Size để trả về kích thước hiện hành của một ArrayList.
Câu 4: Viết thủ tục Put để thêm một phần tử vào cuối ArrayList.
Câu 5: Viết hàm Get để trả về phần tử ở vị trí thứ i của một ArrayList.
Câu 6: Viết thủ tục Remove để xóa phần tử ở vị trí thứ i của một ArrayList.
(Vị trí I xem như hợp lệ đối với hàm Get và thủ tục Remove)
Giải:
/*
De thi sau dai hoc 2010
bai 1:*/
Code:
#include <conio.h>
#include <stdio.h>
#include <alloc.h>
typedef int DataType;
typedef struct Node{
DataType Data;
Node* Next;
};
typedef Node* ArrayList;
typedef Node* Position;
void Init(ArrayList *A)
{
(*A)=NULL;
}
int Size(ArrayList A)
{
if (A==NULL) return 0;
else
{
int temp=0;
while (A!=NULL)
{
temp++;
A=A->Next;
}
return temp;
}
}
void Put(DataType x, ArrayList *A)
{
if ((*A)==NULL)
{
(*A)=(Node*)malloc(sizeof(Node));
(*A)->Data=x;
(*A)->Next=NULL;
}
else
{
ArrayList T;
T=(*A);
while (T->Next!=NULL)
T=T->Next;
ArrayList L;
L=(Node*)malloc(sizeof(Node));
L->Data=x;
L->Next=NULL;
T->Next=L;
}
}
void ReadArray(ArrayList *A)
{
DataType n;
Init(A);
do {
printf("\nNhap n=");
scanf("%d",&n);
if (n!=0)
Put(n,A);
}
while (n!=0);
}
void PrintArray(ArrayList A)
{
while (A!=NULL)
{
printf("%d ",A->Data);
A=A->Next;
}
}
DataType Get (Position P, ArrayList A)
{
if (P!=NULL)
return P->Data;
else
return 0;
}
void Remove(Position P, ArrayList *A)
{
Position T;
T=P;
P=P->Next;
free(T);
}
Position Search(DataType x,ArrayList A)
{
if (A==NULL) return NULL;
else
{
int found=0;
Position T=A;
while (T!=NULL && found==0)
if (x==T->Data)
found=1;
else
T=T->Next;
return T;
}
}
void main()
{
ArrayList A;
ReadArray(&A);
PrintArray(A);
printf("\nKich thuoc hien hanh cua mot arraylist la: %d",Size(A));
printf("\nNhap x=");
DataType x;
scanf("%d",&x);
Position T=Search(x,A);
Remove(T,&A);
PrintArray(A);
getch();
}
Admin xem dùm bài này mình giải có đúng ko? Góp ý dùm e he! Thanks