사용자로부터 입력 문자열을 가져온 다음 문자열의 문자를 사용하여 이중 연결된 목록을 채워야하는 할당이 있습니다. 즉, 사용자 문자열을 반복하고 이중 연결 목록을 생성해야합니다. for 루프를 만들었고 출력이 작동하지만 출력을 표시 한 직후 프로그램이 중단됩니다. 나는 C++에서 총 2 주간의 경험을 가지고 있으므로 신기한 실수를 용서해주십시오. 아래 코드를 찾으십시오.C++ For 루프를 사용하여 이중 연결 목록
#include<cstdlib>
#include<iostream>
#include <string>
using namespace std;
struct node {
string data;
node *next;
node *prev;
};
string getString() {
string userString;
cout << " Please enter a string for reversal: ";
cin >> userString;
return userString;
}
// print forward
void printDataFor(node* head);
// print reverse
void printDataRev(node* tail);
int main() {
node* head= new node;
node* tail= new node;
node* n;
string reverse = getString();
int length = reverse.length();
// loop to create linked list
for (int i = 0; i < length - 1; i++) {
if (head->prev == NULL) {
n = new node;
n->data = reverse[i];
n->prev = NULL;
head = n;
tail = n;
}
else {
n = new node;
n->data = reverse[i];
n->prev = tail;
tail->next = n;
tail = n;
}
}
n = new node;
n->data = reverse[length-1];
n->prev = tail;
tail->next = n;
tail = n;
tail->next = NULL;
// call to print reverse
printDataRev(tail);
}
// print forward
void printDataFor(node* head) {
node* temp = head;
while (temp != NULL) {
cout << temp->data;
temp = temp->next;
}
}
// print reverse
void printDataRev(node* tail) {
node* temp = tail;
while (temp != NULL) {
cout << temp->data;
temp = temp->prev;
}
}
또 다른 문제는 'head-> prev == NULL'이 초기화 루프에서 항상 true라는 것입니다. –