[英]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.