编写一个读入一个字符串,把它顺序存入一个双向链表,并按逆序打印的程序c
时间: 2023-06-18 22:02:16 浏览: 128
写一个读入一个字符串,把它存入一个链表,并按相反的次序打印的程序的两种解决
3星 · 编辑精心推荐
以下是一个读入字符串并将其存入双向链表的示例程序,其中使用了指针、动态内存分配和字符串函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node {
char data;
struct node* next;
struct node* prev;
} Node;
int main() {
char str[100];
printf("Enter a string: ");
fgets(str, 100, stdin);
Node* head = NULL;
Node* tail = NULL;
for (int i = 0; i < strlen(str); i++) {
if (str[i] == '\n') {
break;
}
Node* new_node = (Node*)malloc(sizeof(Node));
new_node->data = str[i];
new_node->next = NULL;
if (tail == NULL) {
head = new_node;
tail = new_node;
new_node->prev = NULL;
} else {
tail->next = new_node;
new_node->prev = tail;
tail = new_node;
}
}
printf("The string in reverse order is: ");
while (tail != NULL) {
printf("%c", tail->data);
tail = tail->prev;
}
printf("\n");
return 0;
}
```
该程序首先使用 `fgets()` 函数从标准输入读入一个字符串,然后使用循环遍历字符串的每个字符,为每个字符创建一个新的链表节点,并将其添加到链表的末尾。在添加节点时,需要判断链表是否为空,如果为空,则将新节点作为链表的头节点,并将 `head` 和 `tail` 都指向该节点;否则,将新节点添加到链表的末尾,并更新 `tail` 指针。最后,使用循环遍历链表的每个节点,从尾到头输出其中存储的字符,即为字符串的逆序。
阅读全文