-1

在一个基本的链表程序中,我通常实现它:

struct node {
    int info;
    struct node * next;
};

int main() {
    struct node * head = malloc(sizeof(node)*3); //for 3 nodes
    head->info = 1;
    head->next->info = 2;
    head->next->next->info = 3;
    //more code
}

现在,要打印第二个节点的内容,我使用以下语句:

cout<<head->next->info;

我的问题是,可以使用以下语句,而不是使用上述语句:

cout<<head[1]->info;
4

3 回答 3

2

我的问题是,可以使用以下语句,而不是使用上述语句:

cout<<head[1]->info;

在您的情况下,实际上,的,因为您的代码不会创建链表,而更像是一个数组。一个数组,其中每个元素显然都应该有一个指向next下一个元素的指针,但所有这些指针都未初始化。

使用std::list直到你知道链表是​​如何工作的......然后继续使用它!

于 2013-10-20T13:03:41.573 回答
1

链表意味着具有在内存中不连续的元素。格式 head[1] 需要连续的元素。

无论如何,您示例中的代码并不代表链接列表

于 2013-10-20T13:00:38.807 回答
0

NO.head 是一个指针,head[1] 表示 *(head+1),但是在您的列表中,每个列表节点不相邻。通常,列表不能这样做,除非您将每个节点与相邻地址一一对应

PS。对不起我糟糕的英语

于 2013-11-13T07:38:01.417 回答