输入N个单词,建立单链表,逆序存储这些单词,然后从头节点开始遍历输出(递归实现)
时间: 2023-09-23 09:13:10 浏览: 75
好的,我会尽力解答您的问题。以下是一种可能的实现方法:
首先,我们需要定义一个单链表节点的结构体,其中包含单词和指向下一个节点的指针:
```c++
struct Node {
string word;
Node* next;
};
```
然后,我们可以编写一个函数来读取N个单词并创建单链表。在读取单词时,我们可以使用C++的输入流,例如cin。每当我们读取一个单词时,我们就可以创建一个新节点并将其添加到链表的开头。这样,我们就可以保证链表中的单词是逆序的。
```c++
Node* createList(int N) {
Node* head = nullptr;
for (int i = 0; i < N; i++) {
string word;
cin >> word;
Node* newNode = new Node{word, head};
head = newNode;
}
return head;
}
```
接下来,我们可以编写一个递归函数来遍历链表并输出单词。该函数将从头节点开始,递归地调用自身来输出链表中的每个单词。当节点为nullptr时,递归将停止。
```c++
void traverse(Node* node) {
if (node != nullptr) {
traverse(node->next);
cout << node->word << " ";
}
}
```
最后,我们可以将这些函数组合在一起并测试它们:
```c++
int main() {
int N;
cin >> N;
Node* head = createList(N);
traverse(head);
return 0;
}
```
这样,我们就可以输入N个单词,创建逆序的单链表,并递归地输出它们。
阅读全文