私は、再帰を使用して単一リンク リスト (スタック) のデータを出力する出力関数の作成を任されました。これまでの私のコードは次のとおりです:
IntStack.h
#include <iostream>
struct NodeType
{
int data;
NodeType *next;
};
class IntStack
{
private:
NodeType root;
int count;
public:
IntStack(void);
~IntStack(void);
void push(int);
int pop(void);
bool isEmpty(void);
void print(NodeType&);
int getSize() const;
NodeType* getRoot();
};
IntStack.cpp
#include "IntStack.h"
IntStack::IntStack()
{
count = 0;
}
IntStack::~IntStack()
{
}
void IntStack::push(int num)
{
NodeType newNode;
newNode.data = num;
newNode.next = &root;
root = newNode;
++count;
}
int IntStack::pop(void)
{
// get root data
// set root equal to root.next
int num = root.data;
root = *root.next;
--count;
return num;
}
bool IntStack::isEmpty(void)
{
return (count == 0);
}
void print(NodeType *node)
{
if (node->next != NULL) {
std::cout << node->data << " " << std::endl;
print(node->next);
}
}
NodeType* IntStack::getRoot()
{
return &root;
}
int IntStack::getSize() const
{
return count;
}
main.cpp
#include <iostream>
#include "IntStack.h"
int main()
{
IntStack stack;
stack.push(7);
stack.push(10);
stack.push(13);
stack.push(43);
stack.push(23);
stack.push(5);
stack.push(32);
stack.push(8);
std::cout << stack.getSize() << " item(s) in the stack." << std::endl;
std::cout << "Pop item off stack: " << stack.pop() << std::endl;
std::cout << stack.getSize() << " item(s) in the stack." << std::endl;
stack.print(stack.getRoot());
return 0;
}
main.cpp の stack.print(stack.getRoot()) 関数でエラーが発生しました。
main.cpp:28:17: タイプ 'NodeType' への非定数左辺値参照は、タイプ 'NodeType *' の一時にバインドできません
明らかに、私は関数へのポインターを送信していませんが、ルートノードを送信するためにさまざまな方法を試しましたが、うまくいきませんでした。私がどのように進めるべきかについての情報は大歓迎です。ありがとう