在基本链表程序中,我通常会实现它:
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;
答案 0 :(得分:2)
我的问题是,不是使用上述声明,而是可以使用以下内容:
cout<<head[1]->info;
在您的情况下,实际上,是,因为您的代码不会创建链接列表,而更像是数组。一个数组,其中每个元素显然应该指向下一个元素的指针next
,但所有这些指针都是未初始化的。
使用std::list
,直到您知道链接列表如何工作...然后继续使用它!
答案 1 :(得分:1)
链表是指内存中不连续的元素。格式头[1]需要连续的元素。
无论如何,示例中的代码不代表链表
答案 2 :(得分:0)
NO.head是指针,head [1]表示*(head + 1),但是在列表中,每个列表节点都不相邻。通常,list除非你逐个放置每个节点,否则不能这样做邻接地址
PS。抱歉我的英语不好