2017-10-12 54 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

谢谢,我尝试过,但得到一些错误。原因,但现在它的工作。 –