Я пытаюсь создать связанный список, который хранит слова с пользовательского ввода и затем печатает их. Мой код работает, однако я хочу его изменить, чтобы запросить пользователя после каждого слова, до последнего слова, которое «завершено». Любые подсказки о том, как я могу это сделать? Щас код запрашивает у пользователя, и пользователь может вводить слова, разделенные пробелами, пока не нажмете ввести, то связанный список печатаетсяСоздание и печать связанного списка со словами с пользовательского ввода
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct list *ptr;
typedef struct list {
char data;
ptr next;
} node;
void insert(ptr *H, char c);
void freeList(ptr *H);
void printList(ptr H);
int main() {
ptr H = NULL;
int c;
printf("enter a single word:\n");
while (((c = getchar()) != EOF) && c != '\n')
insert(&H, (char) c);
printList(H); /*print the list*/
freeList(&H); /*free the list*/
printf("\n");
prinf("Please enter a single word:\n");
return 0;
}
void insert(ptr *H, char c) {
while (*H)
H = &(*H)->next;
*H = malloc(sizeof(**H));
(*H)->data = c;
(*H)->next = NULL;
}
void freeList(ptr *H) {
while (*H) {
ptr tmp = *H;
*H = (*H)->next;
free(tmp);
}
}
void printList(ptr H) {
// NOTE: No need for a pointer-to-pointer here.
while (H) {
printf("%c", H->data);
H = H->next;
}
}
Итак, что вам мешает? Если вы написали этот код, оказалось бы, что вы знаете достаточно, чтобы сделать это изменение. Где вы застряли? –
Я не уверен, как проверить, есть ли слово (конец) и закончить цикл. Я мог бы использовать strcmp(), но я получаю символы не строки. – babichild
Вы должны использовать ориентированный по строкам вход вместо символьно ориентированного ввода. – b4hand