【发布时间】:2013-10-20 12:56:03
【问题描述】:
在一个基本的链表程序中,我通常是这样实现的:
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;
【问题讨论】:
-
this I usually implement it。你永远不应该实现它。你应该使用std::list。 -
顺便说一句,您的代码完全错误 - 您的
next指针都未初始化。无论如何,链表不应该是连续的元素块。 -
在您上面的实现中,您永远不会设置
head->next或其任何子项的值。当您尝试取消引用未初始化的指针时,这很可能会导致异常。 -
链表和数组的有趣组合。
-
需要明确的是,@Will 所说的“异常”不是 C++ 异常,而是操作系统内存异常。
标签: c++ c pointers linked-list