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

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

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

 
 Ответить  Открыть новую тему 
> Копия списка, односвязный список
сообщение
Сообщение #1


Гость






Помогите пожалуйста!!!!!!!
Мне нужно создать копию списка :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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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

P.S. Вот тебе и недостаток неправильного проектирования... А ведь спокойно мог бы пользоваться той же самой процедурой Add, если бы она содержала только именно добавление, а не ввод данных...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Почему у меня при вводе списка он получается наоборот. Например: 2 3 4 5 6;
получается: 6 5 4 3 2
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






А потому что вот здесь:
     new(buff);
read(buff^.num );
buff^.next:=base;
base:=buff;

ты не добавляешь элемент ПОСЛЕ ПОСЛЕДНЕГО, а добавляешь его ПЕРЕД ПЕРВЫМ. Чувствуешь разницу?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Как мне заменить елемент списка на любой другой, т.е допустим у меня есть список: 1 2 3 4 5 7 ; мнге нужно 7 заменнить на 6
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Проходом по всему списку ищи тот указатель P для которого P^.num = 7 . Как только нашел, меняй на любое другое значение:
P^.num := 6;
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 17.05.2024 5:45
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name