You are on page 1of 6

Bài tập danh sách bổ sung

1. Để cài đặt cấu trúc danh sách đặc với kiểu phần tử là số nguyên, cho trước các khai báo như sau:

#define Maxlength 50

typedef int ElementType;

typedef int Position;

typedef struct {

  ElementType Elements[Maxlength];

  Position    Last;

}List;

Các phép toán cơ bản trên danh sách cũng đã được cài đặt.

void MakeNull_List(List *L)

int Empty_List(List L)

Position First_List(List L)

Position End_List(List L)

Position Next(Position P, List L)

ElementType Retrieve(Position P, List L)

void Insert_List(ElementType X, Position P, List *L)

void Delete_List(Position P, List *L)

void Read_List(int n,List *L)


void Print_List(List L)

abcd

Position Locate(ElementType X,List L)

Hãy viết hàm

void filter(List *L)

 xóa các phần tử trùng nhau trong danh sách L. 

Ví dụ: danh sách L có các phần tử  5  10  5  10  9  2, thì danh sách L sau khi xóa là 5 10 9 2

void filter(List *L){

Position a;

Position i;

for (i = First_List(*L); i < End_List(*L); i++){

a = Next(i, *L);

while(a != End_List(*L)){

if(Retrieve(a, *L) == Retrieve(i, *L)){

Delete_List(a, L);

}else a++;

2. Để cài đặt cấu trúc danh sách đặc với kiểu phần tử là số nguyên, cho trước các khai báo như sau:

#define Maxlength 50

typedef int ElementType;

typedef int Position;

typedef struct {

  ElementType Elements[Maxlength];
  Position    Last;

}List;

Các phép toán cơ bản trên danh sách cũng đã được cài đặt.

void MakeNull_List(List *L)

int Empty_List(List L)

Position First_List(List L)

Position End_List(List L)

Position Next(Position P, List L)

ElementType Retrieve(Position P, List L)

void Insert_List(ElementType X, Position P, List *L)

void Delete_List(Position P, List *L)

void Read_List(int n,List *L)

void Print_List(List L)

abcd

Position Locate(ElementType X,List L)

Giả sử trong danh sách L không có phần tử trùng nhau và số lượng phần tử lớn hơn 1. Hãy viết hàm

ElementType Max2_List(List L)

 trả về giá trị lớn thứ hai trong các phần tử của danh sách L. 

Ví dụ: danh sách L có các phần tử  5  14  8  10  9  2, thì giá trị trả về của hàm Max2_List(L) là 10 

ElementType Max2_List(List L){

for(int i = First_List(L); i < End_List(L); i++){

Position p = First_List(L);
while (p != End_List(L)-1){

Position Q;

Q = Next(p, L);

if(Retrieve(p, L) > Retrieve(Q, L)){

Swap(p, Q, &L);

p = Next(p, L);

return Retrieve(End_List(L)-2, L);

3. Để cài đặt cấu trúc danh sách đặc với kiểu phần tử là số nguyên, cho trước các khai báo như sau:

#define Maxlength 50

typedef int ElementType;

typedef int Position;

typedef struct {

  ElementType Elements[Maxlength];

  Position    Last;

}List;

Các phép toán cơ bản trên danh sách cũng đã được cài đặt.

void MakeNull_List(List *L)

int Empty_List(List L)

Position First_List(List L)

Position End_List(List L)

Position Next(Position P, List L)


ElementType Retrieve(Position P, List L)

void Insert_List(ElementType X, Position P, List *L)

void Delete_List(Position P, List *L)

void Read_List(int n,List *L)

void Print_List(List L)

abcd

Position Locate(ElementType X,List L)

Giả sử trong danh sách L không có phần tử trùng nhau và số lượng phần tử lớn hơn 1. Hãy viết hàm

ElementType Min2_List(List L)

 trả về giá trị nhỏ thứ hai trong các phần tử của danh sách L. 

Ví dụ: danh sách L có các phần tử  6  14  3  10  9  5, thì giá trị trả về của hàm Min2_List(L) là 5 

ElementType Min2_List(List L){

for(int i = First_List(L); i < End_List(L); i++){

Position p = First_List(L);

while (p != End_List(L)-1){

Position Q;

Q = Next(p, L);

if(Retrieve(p, L) > Retrieve(Q, L)){

Swap(p, Q, &L);

p = Next(p, L);

return Retrieve(First_List(L)+1, L);

4. Để cài đặt cấu trúc danh sách đặc với kiểu phần tử là số nguyên, cho trước các khai báo như sau:
#define Maxlength 50

typedef int ElementType;

typedef int Position;

typedef struct {

  ElementType Elements[Maxlength];

  Position    Last;

}List;

Các phép toán cơ bản trên danh sách cũng đã được cài đặt.

void MakeNull_List(List *L)

int Empty_List(List L)

Position First_List(List L)

Position End_List(List L)

Position Next(Position P, List L)

ElementType Retrieve(Position P, List L)

void Insert_List(ElementType X, Position P, List *L)

void Delete_List(Position P, List *L)

void Read_List(int n,List *L)

void Print_List(List L)

Position Locate(ElementType X,List L)

Hãy viết hàm

int Sum_List(List L)

 trả về tổng giá trị các phần tử trong danh sách L.


int Sum_List(List L){

int Sum;

Position Q;

Q = First_List(L);

while(Q != End_List(L)){

Sum = Sum + Retrieve(Q, L);

Q = Next(Q, L);

return Sum;

You might also like