2015-10-01 30 views
-1

我相信我在这里有一个相当大的问题,过去几天我一直在关注链表(我最终目标是构建一个多表),但现在我正在使用我的“addNode”函数,我试图弄清楚如何让用户输入数据点,而不是硬编码到程序中。我ADDNODE功能看起来这样:如何允许用户输入链接列表中的数据点C++

void List::AddNode(int addData) { 
    nodePtr n = new node; 
    n->classpointer = NULL; 
    n->class_number = addData; 

    cout << "What value would you like to add?" << endl; 

    //I believe that right here is where I need to figure out 
    //how to allow the user to add what they want the data point to be. 

    if(head != NULL) { 
     curr = head; 
     while (curr->classpointer != NULL) { 
      curr = curr->classpointer; 
     } 
     curr->classpointer = n; 
    } 
    else { 
     head = n; 
    } 
} 

所有的一切我正在寻找如何让用户输入此数据点提供一些指导。如果你需要看到更多的代码,请让我知道,谢谢所有提前。

回答

0

你想使用标准输入来实现这样的功能。就像您使用“cout”将数据发送到控制台一样,您可以使用“cin”从控制台读取数据。像这样:

int x; 
cin >> x; 

,直到你进入什么程序将在这里等着。

关于你的方法,如果你使用尾指针跟踪链表的末尾,你可以做常量时间addNode而不是O(N),就像你现在正在做的那样。这意味着要向班级中添加私人成员“尾巴”。

+0

我一次只采取一步。最终目标是创建一个多链表,但我只是从一个单独的链表开始,并确保我能够正确地工作。但是,“恒定时间”addNode是什么意思? –

+0

另外,在我的main()函数中,我在调用List.addNode(“insert int value here”)来输入数据,但是当我希望用户输入数据时,如何在不输入int的情况下调用该函数当我要求它的价值? –

+0

如果熟悉大O符号,常数时间是O(1)。现在,您遍历整个链表,所有N个节点,这意味着计算机必须处理N个节点才能结束。如果你有一个尾巴指针,你不会浪费那个处理时间,它只需要一个额外的指针。现在,您可以立即在列表的末尾放置一个新节点。如果你的列表非常长,如果你像现在一样迭代,它会花一些时间才能找到最终结果。 – Kirkova

相关问题