需要帮助,需要计算链表中负值的数量,C++

  • 本文关键字:C++ 帮助 计算 链表 c++
  • 更新时间 :
  • 英文 :


所以我正在完成在线课程的作业,我需要一些帮助来编程一种方法来计算C++中链表中负值的数量。

这是我现在拥有的代码以及我尝试过的一个awnsers:

#include <iostream>
#include <cstdlib>
using namespace std;
class IntNode {
public:
   IntNode(int dataInit = 0, IntNode* nextLoc = nullptr);
   void InsertAfter(IntNode* nodePtr);
   IntNode* GetNext();
   int GetDataVal();
private:
   int dataVal;
   IntNode* nextNodePtr;
};
// Constructor
IntNode::IntNode(int dataInit, IntNode* nextLoc) {
   this->dataVal = dataInit;
   this->nextNodePtr = nextLoc;
   return;
}
/* Insert node after this node.
 * Before: this -- next
 * After:  this -- node -- next
 */
void IntNode::InsertAfter(IntNode* nodeLoc) {
   IntNode* tmpNext = nullptr;
   tmpNext = this->nextNodePtr;    // Remember next
   this->nextNodePtr = nodeLoc;    // this -- node -- ?
   nodeLoc->nextNodePtr = tmpNext; // this -- node -- next
   return;
}
// Grab location pointed by nextNodePtr
IntNode* IntNode::GetNext() {
   return this->nextNodePtr;
}
int IntNode::GetDataVal() {
   return this->dataVal;
}
int main() {
   IntNode* headObj = nullptr; // Create intNode objects
   IntNode* currObj = nullptr;
   IntNode* lastObj = nullptr;
   int i = 0;
   int negativeCntr = 0;
   headObj = new IntNode(-1);        // Front of nodes list
   lastObj = headObj;
   for (i = 0; i < 10; ++i) {        // Append 10 rand nums
      currObj = new IntNode((rand() % 21) - 10);
      lastObj->InsertAfter(currObj); // Append curr
      lastObj = currObj;             // Curr is the new last item
   }
   currObj = headObj;                // Print the list
   while (currObj != nullptr) {
      cout << currObj->GetDataVal() << ", ";
      currObj = currObj->GetNext();
   }
   cout << endl;
   currObj = headObj;                // Count number of negative numbers
   while (currObj != nullptr) {
      /* Your solution goes here  */
    if (currObj > 0)
    {
        negativeCntr++;
    }    
      currObj = currObj->GetNext();
   }
   cout << "Number of negatives: " << negativeCntr << endl;
   return 0;
}

我不确定在这种情况下使用什么语法,我在书中徘徊寻找一些解决方案,但找不到任何东西。

这似乎是最简单的方法。

if(currObj->GetDataVal() < 0) negativeCntr++;

最新更新