Задача на списки., Хелп. |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Задача на списки., Хелп. |
QDe5n1K |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: 0 |
Люди помогите!!! Плз... Задача звучит так:
"ВВодится некоторая последовательность букв русского алфавита и записывается в памяти в виде линейного списка. Определить упорядочена ли последовательность по алфавиту( если нет, то упорядочить), заменить выбранную K-ую букву на Q-ю, поменять местами первую и последнюю буквы... Люди, пожалуйста, подскажите как это делать и приведите примеры кусочков кода (полный мне не нужен, хочу сам разобраться, но для этого нужно небольшое ускорение) Пожалуйста, подскажите что и как... |
Бродяжник |
Сообщение
#2
|
Бывалый Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация: 3 |
Цитата данные из файла я считать то считал ...нет, батенька, не считали! Смотрим код:last:=nil;Итак: last:=nil; Сие означает, что мы указатель на "хвост" списка делаем пустым. К чему бы? Ну да ладно. Единственный вопрос, который возникает, это где же у нашего списка "голова"? Впрочем, идем дальше. new(p); - выделяем память под элемент списка. p:=last; - и тут же ее теряем. Ведь, как мы помним, last у нас = nil. А теперь и p тоже nil. read(filex, p^.a); - считываем из файла значения для элемента списка. Куда считываем??? Ведь p у нас nil! last:=p^.next; - это было бы не лишено смысла, если бы опять таки p не было nil. Я бы сделал нечто наподобие следующего: Код procedure open(var p:plist); var filex:text; s:string; iterator:plist; begin {...............} assign(filex,s); reset(filex); new(p); {выделяем память под первый элемент списка} iterator:=p; {ставим указатель на "голову"} while not eof(filex) do begin read(filex,iterator^.a); {считываем очередное значение из файла} if not eof(filex) then {если это значение не последнее} begin {то выделяем память под следующий элемент} new(iterator^.next); iterator := iterator^.next; {сдвигаем указатель} end; end; iterator^.next := nil; {все; дальше элементов нет.} {теперь у нас p указывает на первый, а iterator - на последний элемент} Цитата Сделал, что мог, и пусть, кто может, сделает лучше! |
Текстовая версия | 9.05.2024 22:27 |