最近、面接でこんな質問をされました。私ができることは、0 から 9 までのリンクされたリストから 9 から 1 までトラバースすることだけです。コードは次のとおりです。
#include <iostream>
typedef struct node {
int data; // will store information
node *next; // the reference to the next node
};
node *head;
int printList(node *traverse) {
if (traverse->next == NULL) {
return -1;
}
traverse=traverse->next;
printList(traverse);
cout << traverse->data << endl;
return 0;
}
int main() {
node *temp = NULL;
node *begin = NULL;
for (int i = 0; i < 10; i++) {
temp = new node;
temp->data = i;
if (begin == NULL) {
begin = temp;
}
if (head != NULL) {
head->next = temp;
}
head = temp;
head->next = NULL;
}
head = begin;
printList(head);
return 0;
}
printList()
1)再帰関数で 0 (最初の要素) を出力するにはどうすればよいですか?
printList()
2)再帰関数を while ループに置き換えるにはどうすればよいですか?
3) インタビューで尋ねられた場合、main()
関数には適切なノードの初期化と挿入がありますか?