30/09/2018, 20:30
Anh (chị) cho em hỏi đoạn code sau
#include <iostream>
using namespace std;
int main()
{
int *head, *p, *q, n, tam;
cout << "amount "; cin >> n;
head=new int[n];
for (p=head; p<head+n; p++){
cin >> *p;
}
for (p=head; p<head+n-1; p++){
for (q=p+1; q<head+n; q++){
if(*q<*p){
tam=*p;
*p=*q;
*q=tam;
}
}
}
for (p=head; p<head+n; p++){
cout << *p << endl;
}
}
đoạn code trên sắp sếp không dùng mảng em thắc mắc cái dòng
head=new int[n];
for (p=head; p<head+n; p++)
không biết nó chạy ntn xin các anh (chị) giải thích giúp em.
-
-
indent preformatted text by 4 spaces
-
Bài liên quan
bác viết như thế này em cũng có chút bối rối à, head=new int[n]; cái này là khai báo mảng mà bác new dùng cấp phát động mà chưa thấy delete ở đâu làm em cũng bối rối mà cũng không hiểu tại sao đang trong vòng for có cả ; rồi cin :bối rối:
chắc do không bỏ vào markdown code nên markdown nó làm code lộn xộn hết rồi
Mình bỏ vào markdow rồi đó.
Mọi người có thể xem
cái này nó cũng tương tự mảng thôi… một cách viết khác.
nó cũng duyệt qua địa chỉ của các phần tử rồi so sánh giá trị, rồi đổi chỗ các giá trị.
bạn có thể hiểu
head + i
làhead[i]
, là địa chỉ phần tử thứ i của mảng head (bắt đầu từhead[0]
)còn cái
head = new int[n]
là cấp phát 1 dãy n ô nhớ cho head, head trỏ vào đầu dãy.bỏ vào markdow để code không bị là thế nào thế. bạn hướng dẫn mình với
đây bạn ơi