Помощь - Поиск - Пользователи - Календарь
Полная версия: Копия списка
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
-Alex-
Помогите пожалуйста!!!!!!!
Мне нужно создать копию списка :o
У меня есть такой список:

Код
uses crt;
type
 link=^item;
 item=record
   num:integer;
   next:link
 end;
var
 base:link;
procedure  add(var base:link);
var
 buff:link;
 ans:char;
begin
 repeat
    new(buff);
    read(buff^.num );
    buff^.next:=base;
    base:=buff;
    writeln('Budite dobavlyat ? (y/n):  ');
    ans:= Readkey;
 until ans='n'
end;
procedure writelist(base:link);
var
 i:integer;
begin
 clrscr;
 if base=nil then
 begin
   writeln('Spisok pust!!!');
   readln;
   exit
 end;
 while base<>nil do
   begin
     i:=i+1;
     write(base^.num:4);
     base:=base^.next
   end;
   readln;
end;
begin
 clrscr;
 writeln('vvedite list:');
 add(base);
 writelist(base);
 readln
end.


Про теги не забываем...
volvo
Ну, так в чем проблема? Создай еще один указатель на список, проходи по исходному списку, и копируй данные в дополнительный...

P.S. Вот тебе и недостаток неправильного проектирования... А ведь спокойно мог бы пользоваться той же самой процедурой Add, если бы она содержала только именно добавление, а не ввод данных...
-Alex-
Почему у меня при вводе списка он получается наоборот. Например: 2 3 4 5 6;
получается: 6 5 4 3 2
volvo
А потому что вот здесь:
     new(buff);
read(buff^.num );
buff^.next:=base;
base:=buff;

ты не добавляешь элемент ПОСЛЕ ПОСЛЕДНЕГО, а добавляешь его ПЕРЕД ПЕРВЫМ. Чувствуешь разницу?
Guest
Как мне заменить елемент списка на любой другой, т.е допустим у меня есть список: 1 2 3 4 5 7 ; мнге нужно 7 заменнить на 6
volvo
Проходом по всему списку ищи тот указатель P для которого P^.num = 7 . Как только нашел, меняй на любое другое значение:
P^.num := 6;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.