Cho một danh sách liên kết đơn lưu trữ các số nguyên và các hàm cần được cài đặt định nghĩa như sau:
typedef struct Node{
int data;
struct Node *next;
}SList;
//Hàm chèn một phần tử x và cuối danh sách.
void InsertLast(SList *& F, int x);
//Hàm chèn một phần tử x vào vị trí trước vị trí p trong danh sách.
void InsertBeforeP(SList *& F, int x, int p);
//Hàm xóa một phần tử ở vị trí p.
void Delete(SList *&F, int p);
//Hàm tính giá trị trung bình của các phần tử trong danh sách.
float Average(SList *F);
Hãy cài đặt các hàm và thực hiện các yêu cầu mô tả trong input, output.
Input
Dòng đầu chứa số nguyên dương là số phần tử hiện có của danh sách.
Dòng tiếp theo chứa sô` nguyên lần lượt được chèn vào danh sách bằng phép chèn cuối.
Dòng thứ ba trở đi, mỗi dòng là một bộ có cấu trúc như sau:
i x p nghĩa là chèn vào danh sách ở vị trí trước , và được đánh chỉ số bắt đầu từ 1.
d p nghĩa là xóa phần tử thứ . Nếu không thuộc phạm vi danh sách thì không xóa.
a nghĩa là in ra giá trị trung bình cộng của danh sách.
0 0 dùng để kết thức dữ liệu vào.
Output
Chỉ in ra dữ liệu khi gặp lệnh có cấu trúc , mỗi kết quả in trên một dòng và lấy 4 chữ số sau dấu chấm thập phân.
Samples
Sample Input 1
6
1 1 1 1 1 1
i 4 1
a
i 6 7
i 12 1
i 1 14
a
d 1
a
0 0
Sample Output 1
1.4286
2.9000
1.8889
Comments
xem giúp bài mình và chỉ lỗi sai giúp mình với ạ
Cho mình hỏi, ở hàm insertBeforePos, nếu pos > n thì mình chèn cuối ạ? Nếu chèn cuối thì có ảnh hưởng đến hàm delete không?
có chứ do số phần tử tăng thì vị trí xóa của delete sẽ rộng hơn
xem dùng bài của mình, và chỉ dùm lỗi sai với ạ...
ông xem lại hàm tbc và đổi kiểu dữ liệu thành float và xóa cái *1.0 là oke nha với cnt có hàm size rồi thì tui nghĩ ông nên dùng lại hàm size và xóa cnt++ cho gọn code hơn :3
Gà
bài này code sao ạ
ông tạo các hàm theo yêu cầu r tạo dslk như input r dùng char để check kí tự gì r xử lý bằng các hàm là oke
tại sao output thứ 3 lại in ra 1.8889 v ạ? không phải là 3.1111 hay sao ạ? ai giải thích giúp em với.
delete 1 là xóa node có giá trị 12 á
à