Chào mọi người,
Hiện tại mình đang học thêm về cách sử dụng mảng động và danh sách liên kết, nên có nhiều chỗ vẫn chưa thật sự hiểu rõ, mong mọi người giải thích. Mình có viết đoạn code như sau:
#include <iostream>
#include <vector>
using namespace std;
struct Node{
public:
int data;
Node *next;
};
int main()
{
int n = 10;
Node *node = new Node[n]();
for (int i = 0; i < n; i++){
node[i].data = i+1;
node[i].next = (&node[i+1]);
if (i == n-1){node[i].next = nullptr;}
}
while (node != nullptr){
cout << "data: " << node -> data << endl;
node = node -> next;
}
return 0;
}
Mình có một thắc mắc, đó là nếu như mình viết thế này :
Node *node = new Node();
node -> data = 1;
thì code sẽ chạy được , do node là pointer nên cần dùng dấu " -> " để gọi thành viên của lớp Node. Chỗ này thì mình hiểu. Nhưng khi mình viết đoạn code như thế này :
Node *node = new Node[n]();
for (int i = 0; i < n; i++){
node[i].data = i+1;
node[i].next = (&node[i+1]);
if (i == n-1){node[i].next = nullptr;}
}
thì khi đó mình phải dùng dấu “.” mới gọi được các thành viên trong nhóm.
Tại sao chỗ này bắt buộc phải sử dụng dấu “.” thì mới có thể gọi các thành viên trong lớp đó ra ? Nếu được mong mọi người giải thích giúp mình Node *node = new Node[n]()
hoạt động thế nào ?
Mình xin cảm ơn.