[英]printing a (singly) linked list in c++
好,首先我有我的节点结构
struct node {
string s;
node * next;
};
而且它位于一个类中
class strSet{
private:
node * first;
而且我可以构造列表,并且已经检查过它正在构造中(是),但是当我尝试打印它时。“ Empty Set”被打印
这是我用来“打印”它的代码:(我尝试了许多声明临时指针的方法,但仍然没有做)
node *temp = new node;
temp = first;
if (temp == NULL) cout << "Empty set" << endl;
else {
// node * temp = new node;
while (temp != NULL){
cout << temp->s << endl;
temp = temp->next;
}
}
任何帮助表示赞赏,谢谢
编辑:我有一个函数,使一个单例列表(这是一个分配),代码是:
node *first = new node;
first->s = s;
cout << first->s << endl;
first->next = NULL;
第三行添加元素时将其打印出来
是的,我知道内存泄漏
node *temp = new node;
temp = first;
可以浓缩为-
node *temp = first ; // An unnecessary memory leak in earlier case.
除此之外,打印逻辑似乎还不错。 您没有显示链接列表如何形成的重要部分。
node *first = new node;
first->s = s;
cout << first->s << endl;
first->next = NULL;
这根本不是链接列表。 您只是在创建类型为node*
的实例,然后将s
复制到该实例。
node *temp = new node;
该行是不必要的,并且会泄漏内存; 其余的打印例程是正确的,因此,如果“空集”是打印机,则该集为空
从您发布的少量代码来看,它应该可以工作,所以我的猜测是列表的构造有问题。
现在,您的代码中有些不连贯性-如前所述,对于temp而言,无用的“新节点”,但也有您的(temp == NULL); 该测试可以直接通过“ first”操作。 当然,请确保首先将strSet初始化为null。
然后只有您可以在while()之前和else之后创建temp。 这更合乎逻辑(虽然您在那儿没有赢很多,但是您会获得更高的可读性)(并且更理想一些)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.