IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Динамические структуры данных (список), Помогите решить задачу
Kaygour
сообщение 15.12.2005 12:16
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Kaygour

Репутация: -  0  +


Помогите решить задачу по теме «Динамические структуры данных» в паскале.

Задача звучит так:
Составить программу которая переносит в конец непустого списка L его первый элемент.

Я сделал чтобы первый элемент становился последним, а вот как проверить список на наличие того, пустой он или нет, не знаю.
Код

uses crt;
type
ap=^sp;
sp=record
  f,o:string[20];
   i:string[15];
    ss:ap;
end;
var
fio1,fio2,fio3,fio4:ap;
a,f,b:string;
begin
clrscr;
new(fio1);
write('Введите фамилию: ');
  readln(fio1^.f);
   write('Введите имя: ');
    readln(fio2^.i);
     write('Введите отчество: ');
      readln(fio3^.o);
a:=fio3^.o;
begin
fio3^.o:=fio1^.f;
  fio1^.f:=fio2^.i;
   fio2^.i:=a;
writeln('Поле1: ',fio1^.f);
  writeln('Поле2: ',fio2^.i);
   writeln('Поле3: ',fio3^.o);
  readkey;
end.


Прикрепленные файлы
Прикрепленный файл  1.rar ( 364 байт ) Кол-во скачиваний: 113
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 16.12.2005 13:35
Сообщение #2


Гость






Нет, так как раз делать не нужно... Вот простая программка, иллюстрирующая создание списка и добавление элементов в конец списка:
type
{ Это - просто для удобства, легко изменить тип при надобности на любой другой }
ttype = string;

plist = ^tlist;
tlist = object
info: ttype;
next: plist;
end;

var
p, { Это - "рабочий" указатель на элемент списка }

{ И указатели на его начало и конец }
first, last: plist;
s: string;

begin
{ В начале обнуляем начало и конец списка }
first := nil; last := nil;

{ и нацинаем цикл добавления элементов: }
repeat

{ Читаем, что надо добавить (для выхода из цикла - ввод пустой строки) }
write('s = '); readln(s);
if s <> '' then begin
{ и если не введена пустая строка, то: }

{ берем память под очередной элемент списка... }
new(p);
{ в поле данных пишем сами данные }
p^.info := s;
{ этот 'лемент добавляется в конец, так что следующего ПОКА нет, заносим Nil }
p^.next := nil;

{ если это вообще первый элемент, то на него должен указывать First }
if first = nil then first := p
{
если в список уже что-то было внесено, то исправляем
поле next _бывшего_ последним элемента так,
чтобы оно указывало на добавляемый
}
else last^.next := p;

{
и переменная Last всегда должна содержать адрес
последнего внесенного в список элемента
}
last := p
end;

until s = ''; { если была введена пустая строка - выходим из цикла }

{
Вот тут список из любого количества элементов уже создан...
Можешь, например, его распечатать:
}
p := first;
while p <> nil do begin
writeln(p^.info);
p := p^.next;
end;
end.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"