Упорядочен ли список?! |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Упорядочен ли список?! |
MagZzz |
Сообщение
#1
|
Гость |
Привет всем! Помогите с задачкой!! :p2:
Предлагается, что уже построен и задан указателем Р связанный односторонний список, элементами которого являются символы. а) Подсчитать число элементов списка. б) Проверить упорядочен ли список по возрастанию. |
volvo |
Сообщение
#2
|
Гость |
Это как раз зависит от того, как именно задан список... Если список задан так:
Код type pitem = ^item; item = record elem: char; next: pitem; end; то подсчет числа элементов: Код function count(list: pitem): integer; var x: integer; begin x := 0; while list <> nil do begin list := list^.next; inc(x) end; count := x end; Упорядоченность списка попробуйте сделать сами, я бы для этого ввел дополнительную переменную типа char, и начинал обрабатывать список не с первого, а со второго элемента. |
MagZzz |
Сообщение
#3
|
Гость |
Спасибо огромное за совет volvo!
|
MagZzz |
Сообщение
#4
|
Гость |
Вот я тут по левому наштряпал программку, но она список сортирует! Чё надо переделать чтоб она выдавала только ответ отсортирован список или нет!! Спасибо за внимание!!
Исходный код program sortir; uses crt; type p_stud=^student; student=record name:string[20]; next:p_stud; end; const sum: longint = 0; var head:p_stud; cur:p_stud; p:p_stud; name:string[20]; node: p_stud; tekst:text; begin clrscr; Writeln(' -- Ishodnyi spisok --'); writeln; assign(tekst,'D:\income.txt'); reset(tekst); while not EOF(tekst) do begin Readln(tekst,name); Writeln('', name,' '); end; close(tekst); assign(tekst,'D:\income.txt'); reset(tekst); Readln(tekst,name); reset(tekst); while not EOF(tekst) do begin Readln(tekst,name); inc(Sum, Length(name)) end; close(tekst); Writeln; Writeln('— Kollichestvo elementov - ', Sum ,' '); Writeln; assign(tekst,'D:\income.txt'); reset(tekst); repeat readln(tekst,name); if length (name)<>0 then begin new(node); node^.name:=name; node^.next:=NIL; cur:=head; p:=NIL; while(name>cur^.name) and (cur<>NIL) do begin p:=cur; cur:=cur^.next; end; if p = NIL then begin node^.next:=head; head:=node; end else begin node^.next:=p^.next; p^.next:=node; end; end; until length(name)=0; cur:=head; writeln(' -- - --'); while cur<>NIL do begin writeln(cur^.name); cur:=cur^.next; end; writeln('----------------------------'); readln; close(tekst); end. Код должен быть в тегах |
volvo |
Сообщение
#5
|
Гость |
Код var is_good: boolean; pred_str: string[20]; last: p_stud; ... last := nil; { Заполняем список БЕЗ сортировки } repeat readln(tekst,name); if name <> '' then begin new(node); node^.name := name; node^.next := nil; if head = nil then head := node else last^.next := node; last := node; end; until name=''; { и проверяем на упорядоченность } is_good := true; pred_str := head^.name; p := head^.next; while (p <> nil) and (is_good) do begin is_good := is_good and (p^.name > pred_str); pred_str := p^.name; p := p^.next end; if is_good then Writeln('упорядочен') else writeln('НЕупорядочен'); Кстати, что, обязательно писать ВСЮ программу в основном блоке? Что, ее нельзя было хоть как-то структурировать? Например, сделать вставку элемента в список отдельной процедурой... Ведь со структурированной программой намного легче работать... |
MagZzz |
Сообщение
#6
|
Гость |
Спасибо volvo огромное тебе ещё раз!!
|
Текстовая версия | 14.05.2024 20:30 |