c++ 자료구조를 (코딩)을 도와주세요....

조회수 519회

C++ 책에서 코드를 보고 따라쳤습니다. 하지만 이 코드에 객체들을 add와 remove 하고 싶습니다. 어떻게 하면 될까요? 정말 초보입니다..ㅠㅠ

#include<cstdlib>
#include<iostream>

using namespace std;
class StringNode {                      
private:
    string elem;                             
    StringNode* next;                     

    friend class StringLinkedList;                

};

class StringLinkedList {                   
public:
    StringLinkedList();                      
    ~StringLinkedList();                         
    bool empty() const;                     
    const string& front() const;                     
    void addFront(const string& e);               
    void removeFront();                      
private:
    StringNode* head;                   
};

StringLinkedList::StringLinkedList()            
    : head(NULL) { }

StringLinkedList::~StringLinkedList()          
{
    while (!empty()) removeFront();
}

bool StringLinkedList::empty() const            
{
    return head == NULL;
}

const string& StringLinkedList::front() const      
{
    return head->elem;
}



void StringLinkedList::addFront(const string& e) {  
    StringNode* v = new StringNode;           
    v->elem = e;                          
    v->next = head;                   
    head = v;                     
}


void StringLinkedList::removeFront() {
    StringNode* old = head;
    head = old->next;
    delete old;
}

int main() {
    StringNode A();
    StringLinkedList B();
}
  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 아래 코드 참고하세요.

    • 코드
    #include<cstdlib>
    #include<iostream>
    
    using namespace std;
    
    class StringNode {
    private:
        string elem;
        StringNode* next;
    
        friend class StringLinkedList;
    
    };
    
    class StringLinkedList {
    public:
        StringLinkedList();
        ~StringLinkedList();
        bool empty() const;
        const string& front() const;
        void addFront(const string& e);
        void removeFront();
    private:
        StringNode* head;
    };
    
    StringLinkedList::StringLinkedList()
        : head(NULL) { }
    
    StringLinkedList::~StringLinkedList()
    {
        while (!empty()) removeFront();
    }
    
    bool StringLinkedList::empty() const
    {
        return head == NULL;
    }
    
    const string& StringLinkedList::front() const
    {
        return head->elem;
    }
    
    void StringLinkedList::addFront(const string& e) {
        StringNode* v = new StringNode;
        v->elem = e;
        v->next = head;
        head = v;
    }
    
    void StringLinkedList::removeFront() {
        StringNode* old = head;
        head = old->next;
        delete old;
    }
    
    int main() {
        StringLinkedList list;
    
        list.addFront("hello");
        list.addFront("hi");
        list.addFront("안녕하세요");
        list.addFront("가즈아");
        list.addFront("123");
    
        while (!list.empty())
        {
            cout << list.front() << '\n';
            list.removeFront();
        }
    
        return 0;
    }
    
    • 결과

    이미지

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)