Четверг, 09.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

СВЯЗАННЫЙ СПИСОК
qazz8qazz8Дата: Понедельник, 21.04.2008, 00:38 | Сообщение # 1
Новичок
Группа: Пользователи
Сообщений: 8
Репутация: 0
Замечания: 0%
Статус: Offline
простая задача на самом деле звучит так: вставить новый элемент списка после первого элемента.

сначала создаю массив,затем создаю связ список из элементов массива.а вот вставить элемент никак не получается(((

посмотрите пожалуйста.

program qwer;
uses crt;
const n=5;
type T=array[1..n] of byte;
uk=^zp;
zp=record
cif:byte;
adr:uk
end;
var f:file of byte;
a:t;
i:byte;
s,p:uk;

begin
clrscr;
assign(f,'chisla.aaa');
rewrite(f);
writeln('Massiv');
randomize;
for i:=1 to n do
begin
a[i]:=random(100);
write(a[i]:3);
end;
writeln;
writeln('sp'); --------- (создаем список)
s:=nil;
for i:=1 to n do
begin
new(p);
p^.cif:=a[i];
write(p^.cif,' ');
p^.adr:=s;
s:=p;
end;
readkey;
close(f);
end.

 
AlexanderДата: Понедельник, 21.04.2008, 00:54 | Сообщение # 2
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Что-то вы не то делаете no . Зачем вам массив? В простейшем случае список будет называться односвязным и каждый элемент будет выглядеть так:
Code
type
     Element=record
                      Next:POINTER;      {указатель на следующий элемент}
                      Content:MyType;   {любые данные}
                   end;

Ну а вставка после первого соответственно так:
Code
procedure PastElement(Start:^Element;x:MyType);
var
     N:^Element;
begin
     New(N);
     N^.Content:=x;
     N^.Next:=Start^.Next;
     Start^.Next:=N;
end;

Start- это указатель на первый элемент списка.
x-это содержимое данного элемента списка.


Скажем дружно- нафиг нужно!

Сообщение отредактировал Alexander - Понедельник, 21.04.2008, 00:55
 
qazz8qazz8Дата: Понедельник, 21.04.2008, 01:23 | Сообщение # 3
Новичок
Группа: Пользователи
Сообщений: 8
Репутация: 0
Замечания: 0%
Статус: Offline
все равно не понятно:а можете код программы написать?
так как вы написали я уже делал и у меня выводилось только два элемента а не весь список.
 
AlexanderДата: Понедельник, 21.04.2008, 01:44 | Сообщение # 4
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Млин, ну там буков много получится sad .
Вот процедура вывода списка на экран:
Code
procedure WriteSpisok(P:^Element);
begin
    while P<>nil do
       begin
          WriteLn(P^.Content);
          P:=P^.Next;
       end;
end;

А вот функция для создания первого элемента списка:
Code
Function CreateFirstElement(x:MyType):POINTER;
var
    P:^Element;
begin
    New(P);
    P.Next:=nil;
    P.Content:=x;
end;

Вам осталось только осуществить ввод и составить из процедур программу. Вы, кстати, не указали какие данные должен хранить элемент списка. Теперь-то всё понятно?


Скажем дружно- нафиг нужно!
 
qazz8qazz8Дата: Вторник, 22.04.2008, 02:35 | Сообщение # 5
Новичок
Группа: Пользователи
Сообщений: 8
Репутация: 0
Замечания: 0%
Статус: Offline
а я сделал сам!!никаких процедур там не надо!!!все намного проще делается!!!но все равно спасибо что откликнулись))) эту тему надо бы закрыть)))
 
PavelДата: Среда, 23.04.2008, 14:06 | Сообщение # 6
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Какое-то странное задание. А есть ли разница, куда вставлять элемент? Вроде нет, если правильно организован список, то нет разницы. Остается только переприсвоить ссылки и все. У нас вот была недавно задачка такая.
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;