显示链表中的元素

Displaying Elements from a Linked List

本文关键字:元素 链表 显示      更新时间:2023-10-16

我正在编写一个程序,其中用户输入随机数,程序将这些数字放入树中,然后放入链表中。然后要求用户输入两个边界,程序显示在最大值和最小值之间的所有数字。

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;
}

为了得到要输出的实际数字,我应该改变什么?

您的代码输出begin值。begin是指向第一个节点的指针。cout不知道它是某个特定的指针,因为如果它指向结构体A或结构体b没有区别,即使它考虑了任何区别,它也不知道应该打印哪些成员以及如何打印。因此,您必须以与添加值相同的方式手动输出值。此外,最好将数据作为函数的参数-它将看起来更连贯,并且您将避免任何全局数据。

这根本不是你使用指针的方式!

请查看:指针的描述更专门化到c++

  • 指针必须始终与它所属的变量类型相同指向。
  • 声明指针变量不会创建变量的类型它指向。创建一个指针变量。
  • 虽然指针用星号声明,但并不总是这样与星号连用星号是一元*操作符。int *数量;
  • 指针在使用之前必须初始化。初始化一个将指针赋值给变量;变量必须是与指针类型相同。
  • 要将指针赋值给变量,请在变量的名字。

  • 要将指针赋值给数组,不要使用&符号

    s_address =字符串;

    and NOT s_address= &string;

  • 然而,要将指针赋值给数组"element",请使用&符号:

    [2];
  • 如果你在结构体中使用指针,你需要使用指针结构符号,->

    没有星号,初始化的指针保存一个内存地址。带有星号的初始化指针引用存储的值在它的地址。这就是你错的地方