C++ 为什么这个程序不工作,我认为错误是在链表分配? #包括 #包括 #包括 int main(int argc,char const*argv[]{ 结构sam{ int数据; 结构sam*下一步; }; 结构sam节点[11]; 对于(int i=0;i

C++ 为什么这个程序不工作,我认为错误是在链表分配? #包括 #包括 #包括 int main(int argc,char const*argv[]{ 结构sam{ int数据; 结构sam*下一步; }; 结构sam节点[11]; 对于(int i=0;i,c++,data-structures,C++,Data Structures,原始节点数组 #include <iostream> #include <stdlib.h> #include <stdio.h> int main(int argc, char const *argv[]) { struct sam{ int data; struct sam *next; }; struct sam node[11]; for(int i=0;i<10;i++){ node[i].da

原始节点数组

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char const *argv[]) {
   struct sam{
     int data;
     struct sam *next;
   };
   struct sam node[11];
   for(int i=0;i<10;i++){
   node[i].data = i/2;
   node[i].next = &node[i+1];
 }
 node[10].next=NULL;
 for  (size_t i = 0;node[i].next!=NULL; i++) {
 std::cout  <<node[i].data<< '\t';
 }
 std::cout  << '\n';
 for(int i=0;node[i].next->next!=NULL;i++){
   if(node[i].data == node[i].next->data){
   node[i].next = node[i].next->next;
 }
}

for (size_t i = 0;node[i].next!=NULL; i++) {
std::cout << "Data is " <<node[i].data<< '\t';
}
return 0;
}
下一步设置后

     +-------------------------------------------------+
data | 0 | 0 | 1 | 1 | 2 | 2 | 3 | 3 | 4 | 4 | Garbage |
     +-------------------------------------------------+
Next   1   2   3   4   5   6   7   8   9   10    NULL
所以,如果您使用下一个指针从头部节点转到下一个节点,您将看到过滤列表

但由于使用原始索引方法,所以仍然可以看到所有节点


我将next显示为索引,只是为了说明,而不是实际的指针值-所以您看到next==2-这意味着指针指向数组成员节点[2]

c甚至没有<代码>:ST::cOUT/COD>——也就是:C++。我建议正确地缩进代码,很多错误是通过应用编码帮助编码方式找到的。你不使用NeXT来浏览列表。你总是在底层数组上迭代,而且它永远不会改变。你认为这行是什么?没有执行?@ArtemyVysotsky,你想回答吗?
     +-------------------------------------------------+
data | 0 | 0 | 1 | 1 | 2 | 2 | 3 | 3 | 4 | 4 | Garbage |
     +-------------------------------------------------+
Next   2   2   4   4   6   6   8   8   10   10    NULL