Câu 1:Cho một mảng số nguyên gồm n phần tử (n>=1)
a.Viết hàm long Demle(int a[],int n) để đếm xem trong mảng có bao nhiêu phần tử lẻ
b.Viết hàm void DaoNguoc(int a[],int n) để đảo ngược các giá trị trong mảng
vd: 1 2 3 4 5 => 5 4 3 2 1
Câu 2:Cho cây nhị phân có câu trúc như sau:
struct NUT{
int DuLieu;Nut*Trai,*Phai;
};
typedef NUT*Cay;
a.Viết hàm đếm lá int DEMLA(Cay T) có root bởi con trỏ T bằng phương pháp đệ quy
b.Viết hàm chèn cho cây nhị phân void Chen(Cay &T,int x) sao cho sau khi chèn cây vẫn là cây tìm kiếm nhị phân
c.Vẽ cây tìm kiếm nhị phân có gốc trỏ bởi T sao cho khi duyệt cây theo thứ tự LNR ta đc kết quả : {2,3,4,5,6,8}
Câu 3:
Cho Biểu thức P=(a-b)/3*c*(2-d)-5*e (mô tả rõ trạng thái của ngăn xếp trong mỗi bước)
a.Chuyển biểu thức P từ dạng trung tố sang dạng biểu thức hậu tố Q
b.Định giá biểu thức hậu tố Q đã tìm đc ở trên với a=6,b=3,c=-1,d=3,e=-2;
Câu 4: giả sử một phần tử of hàng đợi đc tổ chức như sau
struct Node{
int data;Node *next;
};
typedef Node*Queue;
Dùng hàng đợi có cấu trúc như trên để đão ngược một số nguyên dương .quá trình thực hiện đc mô phỏng như sau:
ví dụ :số nguyên n=1234
B1:đưa từng chữ số of n vào hàng đợi bắt đầu từ hàng đơn vị ,hàng chục
4 3 2 1
<--------------------------------------
B2:lần lượt lấy các giá trị ở hàng đợi ra và kết hợp lại ta đc 4321 là số đảo ngược của số nguyên n
Yêu cầu :hãy viết thuật toán
a.Mô phỏng việc đẩy 1 giá trị x vào hàng đợi theo mô hình trên
b.Mô phỏng việc lấy một giá trị ra khỏi hàng đợi theo mô hình trên