Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2012, 14:50   #1
Антонина_
 
Регистрация: 23.10.2012
Сообщений: 5
По умолчанию задача на списки

Составить функцию, которая включает в конец списка L новый элемент Е.
или
Составить функцию, которая удаляет из списка второй элемент, если такой есть.

Скоро контрольная с темой не разобралась. помогите пожалуйста.
Антонина_ вне форума Ответить с цитированием
Старый 23.10.2012, 15:07   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

в конец списка:
с учетом того что L (указатель) стоит на последнем элементе на данный момент (двусвязный список)
Код:
new(E);
E^.next := nil;
E^.prev := L;
L^.next := E;
остальные данные в зависимости от вашей структуры списка....

удаление второго с учетом того что всего элементов больше двух...
Код:
L^.next := E^.next;// L  - первый элемент, Е - второй. изменяем указатель первого со второго на третий
L := E^.Next; // указатель на третем элементе
L^.prev := E^.prev; // изменяем предшествующий третьему со второго на первый
Dispose(E); // вроде так пишеься....
пишу код не только за печеньки

Последний раз редактировалось VIK_aka_TOR; 23.10.2012 в 15:12.
VIK_aka_TOR вне форума Ответить с цитированием
Старый 23.10.2012, 18:07   #3
Антонина_
 
Регистрация: 23.10.2012
Сообщений: 5
По умолчанию так а вот это сам ввод и вывод код правильный?

Код:
program Project23;
type
 pSpisok= ^Spisok;
 Spisok=record
 inf: integer;
 next: pSpisok;
 end;
 const
 a:array [0..4] of integer= (4,6,13,10,2);
 function addst (top : pSpisok; val : integer) : pSpisok;
var p : pSpisok;
begin new (p);
 p^. inf:= val;
 p^. next:= top;
 top:= p;
 result:= top;
end;
function WrSt (top:pSpisok): integer;
var k: integer;
    begin
    k:=0;
      while top<>nil do
	begin
	  write(top^.inf);
	 top:=top^.next;
result:=k;
	end;
    end;
var
 top: pSpisok;
  i: integer;

begin
top:=nil;
 for i:= 0 to 4 do top:= addst (top , a [i]);
WrSt(top);
writeln;
writeln;
readln;
end.

Последний раз редактировалось Stilet; 24.10.2012 в 20:38.
Антонина_ вне форума Ответить с цитированием
Старый 23.10.2012, 18:09   #4
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

нажмите правка... и оформите свой код через тэги... которые появятся по нажатии на #... заодно с отступами разберитесь...иначе код не читабелен... да и смайл проскочил... тогда и посмотрим что у вас да как...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 23.10.2012, 18:33   #5
Антонина_
 
Регистрация: 23.10.2012
Сообщений: 5
По умолчанию

я не поняла,в АВС это делать или на самом сайте
Антонина_ вне форума Ответить с цитированием
Старый 23.10.2012, 20:19   #6
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

код у вас в принципе верный.. вот только добавляете не в конец списка... а в начало... тобишь то что было первым... в итоге становится последним...
пишу код не только за печеньки

Последний раз редактировалось VIK_aka_TOR; 23.10.2012 в 21:53.
VIK_aka_TOR вне форума Ответить с цитированием
Старый 24.10.2012, 19:47   #7
Антонина_
 
Регистрация: 23.10.2012
Сообщений: 5
По умолчанию

Не подскажите как это исправить?
Антонина_ вне форума Ответить с цитированием
Старый 24.10.2012, 20:44   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Примерно так:
Код:
function addst (top : pSpisok; val : integer) : pSpisok;
var l,p : pSpisok;
begin 
  new (p);
  p^. inf:= val;
 l:=top; 
 if l<>nil then  begin
  while (l^.next<>nil) do l:=l^.next;
  l^. next:= p;
  l:= p;
  result:= top;
 end else begin
  result:=p;
 end;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.10.2012, 09:51   #9
Антонина_
 
Регистрация: 23.10.2012
Сообщений: 5
По умолчанию nfr djn yfdthyj ghjot

begin
top:=nil;
for i:= 4 to 0 downto top:= addst (top , a [i]);
WrSt(top);
writeln;
writeln;
readln;
end.
Антонина_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на списки (Нафаня) Помощь студентам 2 11.10.2012 22:47
Задача на списки Tattoquardas Паскаль, Turbo Pascal, PascalABC.NET 3 19.03.2012 02:25
Задача на списки blademish Паскаль, Turbo Pascal, PascalABC.NET 7 06.02.2012 01:20
TP задача на списки Ramina Помощь студентам 0 12.12.2010 15:13