2013-05-05 2 views
0

벡터를 반복하고 연결된 목록 노드에 데이터를 가져 오려고합니다 ... 벡터에 대해 STL 반복자를 사용할 수는 있지만 롤을 사용할 수는 있습니다. 연결된 목록을 통해? 나는 STL리스트 반복자를 사용할 수 있다고 생각하지 않는다.STL 벡터 값을 삽입 한 연결된 목록을 반복 iterating

List.h

class List { 
public: 
    List(); 
    void addNode(int addData); 
    void deleteNode(int delData); 
    void printList(); 

private: 
    typedef struct Node { 
     int data; 
     Node* next; 
    }* nodePtr; 

    nodePtr head; 
    nodePtr curr; 
    nodePtr temp; 
}; 

List.cpp

List::List() { 
    head = NULL; 
    curr = NULL; 
    temp = NULL; 
} 

void List::addNode(int addData){ 
    nodePtr n = new Node; 
    n->next = NULL; 
    n->data = addData; 

    if(head != NULL) { 
     curr = head; 
     while (curr->next != NULL) { 
      curr = curr->next; 
     } 
     curr->next = n; 
    } 
    else { 
     head = n; 
    } 
} 

void List::deleteNode(int delData) { 
    nodePtr delPtr = NULL; 
    temp = head; 
    curr = head; 
    while(curr != NULL && curr->data != delData) { 
     temp = curr; 
     curr = curr->next; 
    } 
    if(curr == NULL) { 
     cout << delData << " was not in the list.\n"; 
     delete delPtr; 
    } 
    else { 
     delPtr = curr; 
     curr = curr->next; 
     temp->next = curr; 
     if(delPtr == head) { 
      head = head->next; 
      temp = NULL; 
     } 
     delete delPtr; 
    } 
} 

void List::printList() { 
    curr = head; 
    while(curr !=NULL) { 
     cout << curr->data << endl; 
     curr= curr->next; 
    } 
} 

MAIN.CPP

당신은 반복 할 필요가 없습니다
#include <cstdlib> 
#include <iostream> 
#include <string> 
#include <sstream> 
#include <vector> 
#include <iterator> 

int main(int argc, char** argv) { 
    cout << "Enter some integers, space delimited:\n"; 
    string someString; 
    getline(cin, someString); 

    istringstream stringStream(someString); 
    vector<int> integers; 
    int n; 
    while (stringStream >> n) 
     List listOfInts; 
    listOfInts.addNode(/* stuff in here*/) 
    integers.push_back(n); 

    return 0; 
} 
+0

'std :: list'는 어떻습니까? – chris

+0

당신은 id가 그것을 사용한다고 생각할 것입니다 ... 불행히도, 저는 학생이고, 우리는 정의 된 클래스를 사용하기로되어 있습니다 ... 심지어 가능합니까? 연결된 모든 링크 된 자습서 중에서 목록을 반복하는 방법에 대해서는 언급하지 않았습니다. – StillLearningToCode

+0

@StillLearningToCode List 클래스가 작성된 방식에는 연결된 목록을 반복하는 방법이 포함되어 있지 않습니다. 그래서 그것은 꽤 쓰레기 클래스입니다 (하지만 아마도 그것은 단지 가르치는 목적을위한 것입니다). **하지만 **해야 할 일이 주어진다. 왜 반복 목록을 통해 반복해야하는지, 반복을 통해 반복해야하는 벡터가 필요한지 나는 알지 못한다. 그런 다음 목록에서'addNode'를 호출하면됩니다. – john

답변

3

연결된 목록. addNode을 사용하여 연결된 목록에 항목을 추가하십시오.

vector<int> vec; 
... 
List list; 
for (vector<int>::iterator i = vec.begin(); i != vec.end() ++i) 
    list.addNode(*i); 

그게 전부입니다.