2017-10-12 53 views
2

我的列表包含一個名稱和校園ID(CWID)。我如何將我列表中的cwid與我傳入的整數進行比較?我寫下了我正在嘗試做的比較的僞碼。C++在單個鏈接列表中訪問特定值

void check_cwid(studentList& list, int cwid) { 

studentNode *p = list.head_; 

while(p != nullptr){ 

//Something like this 
    if *p.cwid() == cwid 
    //do something 

    p = p->next_; 

} 

我正試圖完成上面的代碼。我只是不知道如何比較列表中的特定項目。下面是我的整個練習項目。

#include <iostream> 
using namespace std; 

class student { 

public: 

    student(const string& sname = "", int cwid = 0) : sname_(sname), cwid_(cwid) {} 

    string sname() const {return sname_;} 
    int cwid() const {return cwid_;} 

    friend ostream& operator <<(ostream& os, student st){ 
     return os << endl << st.sname_ << endl << st.cwid_ << endl; 
    } 



private: 

    string sname_; 
    int cwid_; 

}; 


struct studentNode { 

    studentNode(const string& sname, int cwid, studentNode* next=nullptr) :st_(sname, cwid), next_(next) {} 

    studentNode(student& st, studentNode* next=nullptr) : st_(st), next_(next) {} 

    friend ostream& operator << (ostream& os, studentNode node) { 
     return os << node.st_; 
    } 


    studentNode* next_; 
    student st_; 

}; 

struct studentList { 

    studentList() : head_(nullptr), size_(0) {} 

    studentNode* head_; 
    size_t size_; 

}; 


///******************** what im trying to do 
void check_cwid(studentList& list, int cwid) { 

    studentNode *p = list.head_; 

    while(p != nullptr){ 




    } 
} 
+1

這是代碼山嶺巨人,它的凌亂,大量的空白。你能清理它並刪除那些與手頭問題沒有嚴格關係的東西嗎? – tadman

+0

好吧現在怎麼樣 –

+0

那裏還有很多死亡空間,加上從問題核心分心的神祕代碼,不管是什麼。閱讀[如何製作一個很好的最小自包含示例](https://stackoverflow.com/help/mcve)。 – tadman

回答

2
int check_cwid(studentList& list, int cwid) { 

studentNode *p = list.head_; 
int list_size = list.size_; 
while(list_size--){ 

//Something like this 
    if (p -> st_.cwid() == cwid) 
    //do something 
    break; 
    else 
     p = p -> next_; 

} 
+0

沒有成員st在studentNode(錯誤我越來越多) –

+0

固定。你不是靠自己做的嗎?只寫st而不是st_。 – Alex

+0

謝謝,我嘗試過,但得到一些錯誤。原因,但現在它的工作。 –