我正在开发一个用户输入随机数的程序,程序将这些数字放入树中,然后放入链表中。然后要求用户输入两个边界,程序显示最大值和最小值之间的所有数字。
EG。
Enter an integer or 0 to quit: 2
Enter an integer or 0 to quit: 3
Enter an integer or 0 to quit: 4
Enter an integer or 0 to quit: 5
Enter an integer or 0 to quit: 6
Enter an integer or 0 to quit: 0
The values are:
2 3 4 5 6
Enter the minimum:
2
Enter the maximum:
6
The list is: 0x3f0d58
Process returned 0 (0x0) execution time : 6.464 s
Press any key to continue.
问题是我的程序没有输出列表,而是输出0x3f0d58。
执行输出的功能是
void createlist() //creates linked list
{
linkednode *current;
linkednode *begin;
current=new linkednode;
current->data=data[0];
current->next=NULL;
begin=current;
for (int count=1; count<(int)data.size(); count++)
{
current=appendlist(current,data[count]);
}
cout<<"The list is: "<<begin<<endl;
}
为了获得实际输出的数字,我应该更改什么?
答案 0 :(得分:1)
根本不是你的指针!
请查看:Pointers了解更专门针对C ++的描述
要指定变量的指针,请使用&符号 变量的名称。
m_address =&amp; memory;
要指定指向数组的指针,请不要使用&符号
s_address = string;
和NOT s_address =&amp; string; (这也有效,但传统上没有做到)
但是要指定一个指向数组&#34;元素&#34;的指针,请使用&符号:
element =&amp; string [2];
如果您使用带结构的指针,则需要使用 指针结构表示法, - &gt;
没有星号,初始化指针保存内存地址。 使用星号,初始化指针引用存储的值 在它的地址。这是你出错的地方。
答案 1 :(得分:1)
您的代码输出begin
值。 begin
是指向第一个节点的指针。 cout
不知道它是一个特定的指针,因为它指向结构A或结构B没有区别。即使它会考虑任何差异,它也不知道成员和应该如何打印。因此,您必须以添加它们的相同方式手动输出值。
此外,最好将数据作为函数的参数 - 它看起来更连贯,您将避免任何全局数据。