C语言程序 没有错误 但是没有结果

来源:百度知道 编辑:UC知道 时间:2024/05/12 09:23:44
我想设定一个链表,每个链表的节点分别为,1,2,3.。。。
然后输出链表
#include <iostream>

using namespace std;
typedef struct node
{
int data;
struct node *next;
}list;
int main (int argc, char *argv[])
{
list *H,*p;
H=p = new list[sizeof(list)];
int i,n=5;
for(i=0;i<5;i++)
{
H->data =i+1;
H = H->next;
}
for(i=0;i<5;i++)
{ printf("%d\n",H->data);
printf("%d\n",p->data);
p =p->next;
H = H->next;
}
cout << "Hello World!" << endl;
cout << "Press ENTER to continue..." << endl;
cin.get();
return 0;
}

这个不是链表,是数组,默念“是数组,不是链表”,然后再去学习链表知识(最重要的是给 next 变量赋值),这个问题就解决了,按你的意思,正确的写法应该是:

#include <iostream>

using namespace std;
typedef struct node
{
int data;
struct node *next;
}list;

int main (int argc, char *argv[])
{
list *H ,*p;
H = p = new list[5];

int i,n=5;
for(i=0;i<5;i++)
{
H->data = i + 1;
H = H + 1;
}

H = p;
for(i=0;i<5;i++)
{
printf("%d\n",H->data);
H = H+1;
}
cout << "Hello World!" << endl;
cout << "Press ENTER to continue..." << endl;
cin.get();
return 0;
}

H=p = new list[sizeof(list)];
这行代码错误。sizeof(list)=8;
所以,程序将认为上面的那句的意思是:
H=p = new list[8];
我想这不是你想要得把
可改成:H=p = (list *)malloc(si