|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.11.2008, 13:40 | #1 |
Пользователь
Регистрация: 07.11.2008
Сообщений: 10
|
Динамические списки
Всем привет!!!! Ребята помогите пожалуйста, кто чем может!! Из-за работы времени не хватает...
В работе используются односвязные списки, информационная часть которых – целое число. Требуется создать список и выполнить задания . Для создания списка и вывода его на форму написать отдельные процедуры. Создание списка может быть выполнено по схеме: 1. «Введите количество элементов в списке» (N – количество элементов); 2. «Введите элементы списка». В процедурах обработки списка по варианту количество элементов N не использовать. Задания: 1. Подсчитать в списке число соседств чисел одного знака. 2. Удалить из списка каждый третий элемент. 3. Упорядочить список по возрастанию значений элементов. |
09.11.2008, 05:15 | #2 |
Форумчанин
Регистрация: 28.10.2008
Сообщений: 350
|
Часть задачи.. создание списка, вывод и удаление каждого третьего
uses SysUtils; type sllptr = ^slltype; slltype = record inf : real; next : sllptr; end; {********************************** ******* Вывод на печать *********************************** ******} Procedure LookSll(head : sllptr); var cur : sllptr; i:integer; begin i:=0; writeln; cur:=head; while cur <> nil do begin inc(i); writeln(cur^.inf:3:0,' : ',i,' -Элемент списка'); cur:=cur^.next; end; writeln; end; {********************************** *** Удаление k-го элемента *********************************** *} Procedure DeleteSll(var head : sllptr; del : sllptr ); var prev : sllptr; begin if del=head then head:=del^.next else begin prev:=head; while (prev^.next<>del) and (prev^.next<>nil) do begin prev:=prev^.next; end; prev^.next:=del^.next; Dispose(del); end; end; Var prev,Head,P:sllptr; i:Byte; n:Integer; begin randomize; i:=0; prev:=nil; Head:=nil; repeat {$I-} write('Введите количество элементов списка : '); readln(n); {$I+} until ioresult=0; writeln; while (i<n) do begin inc(i); New(P); P^.inf:=Random(100)-50; if prev <> nil then begin P^.next:=prev^.next; prev^.next:=P; end else begin P^.next:=head; head:=P; end; end; writeln('Список******************** *************'); LookSll(Head); P:=Head; i:=1; while (P<>nil) do begin IF i=3 then begin DeleteSll(Head,P); i:=1; end else inc(i); P:=P^.next; end; LookSll(Head); dispose(P); readln; end. |
09.11.2008, 13:17 | #3 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Вот мой вариант полного решения
Код:
Последний раз редактировалось eoln; 09.11.2008 в 13:39. |
09.11.2008, 17:01 | #4 |
Пользователь
Регистрация: 07.11.2008
Сообщений: 10
|
Ребята, спасибо вам большое!!! Вы можно сказать мне жизнь спасли!!!
|
15.01.2012, 14:33 | #5 |
Регистрация: 23.12.2011
Сообщений: 5
|
у меня была такая-же задача-
СПАСИБО ПРЕБОЛЬШОЕ!!!! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамические объекты | 095 | Общие вопросы Delphi | 2 | 04.06.2011 19:09 |
сохранение структуры (динамические списки очередей) в файле | AlenaZ | Помощь студентам | 2 | 09.06.2008 20:14 |
Помогите исправить косяк в задаче на динамические переменные списки | Taisja | Помощь студентам | 2 | 31.05.2008 21:49 |