Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Динамические структуры данных. Списки.

13K
13 декабря 2005 года
U-rique
12 / / 11.12.2005
С клавиатуры вводится последовательность, содержащая четное число символов. Определить, является ли последовательность палиндромом (палиндром одинаково читается с начала и конца).

Есть несколько идей, но как решить задачу именно с динамикой/списками - ?..

Хелпайте.
247
14 декабря 2005 года
wanja
1.2K / / 03.02.2003
Цитата:
Originally posted by U-rique
С клавиатуры вводится последовательность, содержащая четное число символов. Определить, является ли последовательность палиндромом (палиндром одинаково читается с начала и конца).

Есть несколько идей, но как решить задачу именно с динамикой/списками - ?..

Хелпайте.


Вставлять в список умеешь? тогда втсавляешь первую половину в начало, потом вынимаешь по одному и сравниваешь с остальными. Стек, знаешь ли.

9.6K
14 декабря 2005 года
quakersasha
23 / / 21.10.2005
Цитата:
Originally posted by U-rique
С клавиатуры вводится последовательность, содержащая четное число символов. Определить, является ли последовательность палиндромом (палиндром одинаково читается с начала и конца).


Код:
type zap=record
s1,s2,s3:integer;
end;
var a:array [1..6] of integer;    
    b:zap;
    i:integer;
BEGIN
for i:=1 to 6 do
read(a);
b.s1:=a[1];
b.s2:=a[2];
b.s3:=a[3];
if (b.s1=a[6]) and (b.s2=a[5]) and (b.s3=a[4])then
writeln('true');
else
writeln('false');
END.

только зачем туту запись?
9.6K
14 декабря 2005 года
quakersasha
23 / / 21.10.2005
эээ... возможно не то что нужно, но как вариант
15K
14 декабря 2005 года
ksana
8 / / 14.12.2005
Вот информация о том как организовать, просматривать элементы списка, а также добавлять новые и удалять из списка:
Type
Link = ^Node;
Node = record
Data: integer;
Next: Link;
End;

Var
Head, z: link;

procedure list_initialize;
begin
new( head );
new( z );
head^.next := z;
z^.next := nil;
end;

procedure insert_after( v : integer; t : link );
var
x : link;
begin
new(x);
x^.data := v;
x^.next := t^.next;
t^.next := x;
end;

procedure delete_next( t : link );
var
del: link;
begin
del := t^.next;
t^.next := t^.next^.next;
dispose(del);
end;

На основе этих процедур можно составить необходимый Вам алгоритм:
1. Создаёте список
2. Считываете в него с клавиатуры символы
3. Можно создать ещё один список и заполнить его элементами первого списка, но только с конца. А можно вместо списка воспользоваться массивом.
4. Сравнить на равенство элементы списков или списка и массива.
13K
14 декабря 2005 года
U-rique
12 / / 11.12.2005
спасибо всем за помощь. теперь постараюсь разобраться.
13K
13 января 2006 года
U-rique
12 / / 11.12.2005
кстати, если кого-то заинтересует решение данной задачи - вот оно.. просто забыл сразу выложить..
вроде без багов работает.. даже с пробелами)
Код:
program palindrom;
        uses crt;
        type el_p=^element;
        element=record
              data:char;
              next:el_p;
        end;
        var start, buff:el_p;
            i:byte;
            palindrom:string;
            flag:boolean;

begin
     clrscr;
     write('Vvedite stroku: '); readln(palindrom);

     {string parity check}
     while length(palindrom) mod 2 <> 0 do begin
        palindrom:='';
        writeln('Vi vveli ne4etnoe kol-vo bukv.');
        write('Vvedite ewe ra3: '); readln(palindrom);
     end;

     new(start);
     start^.data:=palindrom[1];
     start^.next:=nil;

     {insertion of string into list 'before first'}
     for i:=2 to length(palindrom) do begin
              new(buff);
              buff^.data:=palindrom;
              buff^.next:=start;
              start:=buff;
     end;

     {list output}
     i:=1;
     while start<>nil do begin
            {write(start^.data);}
            if start^.data<>palindrom then flag:=false
            else flag:=true;
            start:=start^.next;
            inc(i);
     end;

     writeln;
     if flag then writeln('Stroka - palindrom.')
     else writeln('Stroka - NE palindrom.');
     readkey;
end.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог