在C语言中输入N个单词,建立单链表,逆序存储这些单词,然后从头节点开始遍历输出(递归实现)
时间: 2023-09-23 21:13:10 浏览: 115
有关C语言的递归算法
好的,以下是在C语言中实现输入N个单词,建立单链表,逆序存储这些单词,然后从头节点开始遍历输出的代码示例:
首先,我们需要定义一个单链表节点的结构体,其中包含单词和指向下一个节点的指针:
```c
struct Node {
char word[20];
struct Node* next;
};
```
然后,我们可以编写一个函数来读取N个单词并创建单链表。在读取单词时,我们可以使用C语言的输入函数,例如scanf。每当我们读取一个单词时,我们就可以创建一个新节点并将其添加到链表的开头。这样,我们就可以保证链表中的单词是逆序的。
```c
struct Node* createList(int N) {
struct Node* head = NULL;
for (int i = 0; i < N; i++) {
char word[20];
scanf("%s", word);
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
strcpy(newNode->word, word);
newNode->next = head;
head = newNode;
}
return head;
}
```
接下来,我们可以编写一个递归函数来遍历链表并输出单词。该函数将从头节点开始,递归地调用自身来输出链表中的每个单词。当节点为NULL时,递归将停止。
```c
void traverse(struct Node* node) {
if (node != NULL) {
traverse(node->next);
printf("%s ", node->word);
}
}
```
最后,我们可以将这些函数组合在一起并测试它们:
```c
int main() {
int N;
scanf("%d", &N);
struct Node* head = createList(N);
traverse(head);
return 0;
}
```
这样,我们就可以输入N个单词,创建逆序的单链表,并递归地输出它们。
阅读全文