我离c++很近,正在类内处理链表。我正在尝试将一个字符数组传递到链接列表中。不知怎么的,当我打印的时候,试着把它打印出来。结果相反。我想知道为什么我的代码会这样做,但我似乎不明白。
class foo{
public:
foo(const char * s =""){
head = Node::toList(s);
}
void print(ostream & in){
for(ListNode *p = head; p!= nullptr;p=p->next)
out << p->info;
}
private:
struct Node{
char info;
Node *next;
Node(char newInfo, Node *newNext):info(newNext),next(newNewxt){
}
static Node *toList(const char *s){
Node *temp = nullptr;
int x=0;
for(;s[x] != ' ';x++){
temp = new Node(s[x],temp); // Part where I do understand why I am getting reverse
}
return temp;
}
Node *head;
};
ostream & operator << (ostream & out, foo src){
src.print(out);
return out;
};
任何提示或建议都很好。
如果您希望列表由使用其直接字符顺序的字符串初始化,则函数可以按照以下方式
static Node * toList( const char *s )
{
Node *head = nullptr;
for ( Node **temp = &head; *s; ++s )
{
*temp = new Node( *s, nullptr );
temp = &( *temp )->next;
}
return head;
}
考虑到问题中显示的代码片段不会编译。
除了语法错误之外,您不能将operator <<
声明为用于在流中输出类的对象的类成员函数。