Дан файл, содержащий некоторое количество слов. Вывести слова, являющиеся палиндромами (одинаково читается как слева направо, так и справа налево). Задание 4("Двунаправленные списки"). (см. "Сборник задач для начинающего программиста") Алгоритм: #include <iostream> #include <fstream> // подключаем заголовок для работы с файлом using namespace std; // структура "Двунаправленный список" struct dlList { dlList *prev; char c; dlList *next; } *start, *last; void readFile(const char *name); // читает файл, записывает слово в двунаправленный спиок и вызывает функцию печати файла. bool check_palindrome(void); // проверяет слово на условие палиндрома void print_palindrome(void); // вывод палиндрома на экран int main() { start = NULL; const char *name = "data1"; // Имя файла, который будем читать readFile(name); return 0; } void readFile(const char *name) { char ch = ' '; dlList *p, *p1; ifstream in(name); // Если файла с именем name не существует if(!in) { cout << "The file \"" << name << "\" cannot be opened.\n"; } while(in) { while(ch != '\n' && !in.eof()) { in.get(ch); // Считываем символ из файла if(ch >= 65 && ch <=90 || ch >= 97 && ch <= 122) { if(ch >= 65 && ch <= 90) ch = ch - 'A' + 'a'; if(start == NULL) { start = new dlList; start -> c = ch; start -> next = NULL; start -> prev = NULL; last = start; } else { p = new dlList; p -> c = ch; p -> next = NULL; p -> prev = last; last -> next = p; last = p; } } } // Если палиндром, то печатаем его if(check_palindrome()) { print_palindrome(); } p = start; while(p != NULL) { p1 = p -> next; delete p; p = p1; } start = NULL; last = NULL; ch = ' '; } in.close(); } bool check_palindrome(void) { dlList *start1, *last1; start1 = start; last1 = last; while (start1 != last1) { if ( (start1 -> c) != (last1 -> c) ) break; else { start1 = start1 -> next; last1 = last1 -> prev; } } if (start1 == last1) return true; else return false; } void print_palindrome(void) { dlList *p; p = start; while(p != NULL) { cout << p -> c; p = p -> next; } cout << endl; }
Ключевые слова:
Двунаправленный список, палиндромы, файл чтение
|
|||||||