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;
}
'std :: list'는 어떻습니까? – chris
당신은 id가 그것을 사용한다고 생각할 것입니다 ... 불행히도, 저는 학생이고, 우리는 정의 된 클래스를 사용하기로되어 있습니다 ... 심지어 가능합니까? 연결된 모든 링크 된 자습서 중에서 목록을 반복하는 방법에 대해서는 언급하지 않았습니다. – StillLearningToCode
@StillLearningToCode List 클래스가 작성된 방식에는 연결된 목록을 반복하는 방법이 포함되어 있지 않습니다. 그래서 그것은 꽤 쓰레기 클래스입니다 (하지만 아마도 그것은 단지 가르치는 목적을위한 것입니다). **하지만 **해야 할 일이 주어진다. 왜 반복 목록을 통해 반복해야하는지, 반복을 통해 반복해야하는 벡터가 필요한지 나는 알지 못한다. 그런 다음 목록에서'addNode'를 호출하면됩니다. – john