1 / 1 / 1
Регистрация: 03.10.2008
Сообщений: 35
1

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

05.10.2008, 10:15. Показов 2264. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Искал манул, не нашел путного ничего... Суть задачи такова
"Написать процедуру, которая вставляет новый элемент Е, после первого элемента непустого списка Л" и
"Описать процедуру или функцию которая в списке Л из каждой группы подряд идущих элементов оставляет только один"
Ващще хз как сделать, помогите, кодом, советом или мануалом пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2008, 10:15
Ответы с готовыми решениями:

Динамические структуры данных. Списки
С клавиатуры вводится последовательность символов. Построить из них список. Вывести символы списка...

Динамические структуры данных. Простые списки
Помогите решить: "Составить список, состоящий из кодов псевдографических символов. Выделить в...

Динамические структуры данных. Линейные списки
1. Сформировать список из N целочисленных случайных элементов (N – вводится ...

Динамические структуры данных. Списки. Слово-перевертыш
Динамические структуры данных. Списки: В деке задать слово. Определить, является ли оно...

5
13207 / 6595 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
05.10.2008, 17:55 2
Вот, например, информация к размышлению:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
type
    PItem = ^TItem;
    TItem = record  {элемент списка}
        Data:Integer;  {данные элемента}
        Next:PItem;  {указатель на следующий элемент}
    end;
 
procedure NewList(var L:PItem; Len:Integer);
{создаем новый список в переменной L}
var p:PItem; i:Integer;
begin
    if Len<=0 then begin  {если длина равна 0}
        L := nil;  {то список пустой}
        exit;
    end;
    i := 1;
    new(L);  {создаем новый элемент списка}
    L^.Data := i;
    inc(i);
    p := L;  {копируем указатель на элемент}
    dec(Len);
    while Len>0 do begin {пока длина не закончилась}
        new(p^.Next); {создаем следующий элемент списка}
        p := p^.Next; {и переходим на него}
        p^.Data := i;
        inc(i);
        dec(Len); {убавляем длину}
    end;
    p^.Next := nil; {у последнего элемента списка нет следующего}
end;
 
procedure DisposeList(var L:PItem);
{уничтожаем список, освобождаем память}
var p:PItem;
begin
    while L<>nil do begin {пока список не пуст}
        p := L;  {текущий элемент списка}
        L := L^.Next; {список теперь начинается со следующего элемента}
        dispose(p); {а текущий удаляем}
    end;
end;
 
procedure PrintList(L:PItem);
{выводим данные из списка}
var b:boolean;
begin
    write('(');
    b := false; {вспомогательна переменная для запрета лишней запятой в начале}
    while L<>nil do begin {пока в списке еще есть элементы}
        if b then write(', ') else b := true;
        write(L^.Data); {выводим текущий элемент}
        L := L^.Next; {и переходим на следующий}
    end;
    writeln(')');
end;
 
var list:PItem;
begin
    NewList(list, 10); {создаем список}
    write('list = ');
    PrintList(list); {выводим список}
    DisposeList(list); {уничтожаем список}
end.
0
1 / 1 / 1
Регистрация: 03.10.2008
Сообщений: 35
05.10.2008, 18:38  [ТС] 3
А можно камментов чтоли побольше, или так рассказать что вообще код делает, я с этой чтукой фпервые столкнулси =)
0
13207 / 6595 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
06.10.2008, 20:00 4
Один элемент списка содержит какие-то данные и указатель на следующий элемент списка. Последний элемент списка в указателе на следующий содержит nil. Сам список - это указатель на первый элемент. Пустой список - это nil.

Т.е. получается примерно такая картина:
Код
 list
  |
  V
[item1] -> [item2] -> ... -> [itemN] -> nil
 data1      data2             dataN
0
1 / 1 / 1
Регистрация: 03.10.2008
Сообщений: 35
10.10.2008, 16:14  [ТС] 5
Цитата Сообщение от mustaman Посмотреть сообщение
"Написать процедуру, которая вставляет новый элемент Е, после первого элемента непустого списка Л"
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
uses crt;
 
type
 Pelo= ^Telo;
 Telo = record
        head: integer;
        tail: Pelo;
 end;
 
 
procedure Add(var p: Pelo; el: integer);
var
 temp: Pelo;
begin
 temp := new(Pelo);
 temp^.head := el;
 temp^.tail := p;
 p := temp;
end;
 
procedure PrintPelo(p: Pelo);
begin
 write(p^.head, ' ');
 if p^.tail<>nil then
   PrintPelo(p^.tail);
end;
 
var
 t1: Pelo;
 k, i: integer;
begin
 clrscr;
 t1 := new(Pelo);
 t1^.head  := 17;
 t1^.tail := nil;
 for i:=1 to 15 do
   begin
    k := random(15)+1;
    Add(t1, k);
    write(k, ' ');
   end;
 writeln;
 PrintPelo(t1);
 readln;
end.
Где косяк?
0
13207 / 6595 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
10.10.2008, 20:33 6
Цитата Сообщение от mustaman Посмотреть сообщение
"Написать процедуру, которая вставляет новый элемент Е, после первого элемента непустого списка Л"
Вставляет не после, а перед первым элементом.
Pascal
1
2
3
4
5
6
7
8
9
procedure Add(var p: Pelo; el: integer);
var
 temp: Pelo;
begin
 temp := new(Pelo);
 temp^.head := el;
 temp^.tail := p^.tail; {новый указывает на бывший второй}
 p^.tail := temp; {а первый указывает на новый}
end;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2008, 20:33
Помогаю со студенческими работами здесь

Базовые динамические структуры данных. Связные списки
Условие: Циклический односвязный список с барьером (фиктивным элементом). Порядок :FIFO (очередь)...

Динамические структуры, списки. Программа написана, но есть один недочет
Составить программу, которая переворачивает список L, т.е. изменяет ссылки в этом списке так, чтобы...

Динамические структуры данных. Организация данных в списковые структуры
Написать программу вставки нового элемента в список за некоторым заданным по- рядковым номером...

Динамические структуры данных.
Помогите пожалуйста с программой:help: : Разработайте программу работы с односвязным списком....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru