链表箭头操作符

时间:2013-10-20 12:56:03

标签: c++ c pointers linked-list

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

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;

3 个答案:

答案 0 :(得分:2)

  

我的问题是,不是使用上述声明,而是可以使用以下内容:

cout<<head[1]->info;

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

使用std::list,直到您知道链接列表如何工作...然后继续使用它!

答案 1 :(得分:1)

链表是指内存中不连续的元素。格式头[1]需要连续的元素。

无论如何,示例中的代码不代表链表

答案 2 :(得分:0)

NO.head是指针,head [1]表示*(head + 1),但是在列表中,每个列表节点都不相邻。通常,list除非你逐个放置每个节点,否则不能这样做邻接地址

PS。抱歉我的英语不好