0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 8
1

Темы - "Списки", "Деревья"

08.06.2009, 22:34. Показов 860. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Если сможете помогите плззз написать 2 программы:

1.(Списки) С последовательности чисел удалить одинаковые, оставивши их по одному.
2.(Деревья) Вычислить длину пути от корня до вершины с заданным ключом.

Списки не успел выучить и не сильно успеваю.. проги надо сделать до завтра... Если кто сможет помогите.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2009, 22:34
Ответы с готовыми решениями:

Стеки, списки, деревья, графы.
Прошу помощи в решении задач: 1. Используя очередь, решить следующую задачу. TYPE имя = (Анна,...

Деревья, двунаправленные списки - основные операции
Реализовать следующие функции для работы с однонаправленным списком: - создание; - добавление...

Динамические структуры (списки, очереди, деревья)
Нужно решить задачу с помощью списков,очередей или деревьев в Паскале. Международный...

Динамические структуры данных (списки, очереди, стеки, деревья)
создать программу на языке Паскаль для реализации операций над одной из структур данных: -...

Динамические структуры данных (списки, очереди, стеки, деревья)
Решил я начать писать мини FAQ по моим любимым Динамическим структурам данных. Все программы я...

9
149 / 139 / 57
Регистрация: 05.06.2009
Сообщений: 310
09.06.2009, 09:07 2
1)
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
program EvgeniiSp;
uses Crt;
var
 i,j,k,x,count: integer;
 mas: array[1..50] of integer;
 
//------ Input_data ------//
 procedure Input_data;
  begin
   write('Ââåäèòå ÷èñëî ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè x(< 50): ');
   readln(x);
  end;
  
//------ Filling ------//
 procedure Filling;
  begin
   for i:=1 to x do
     mas[i]:=random(10);
   writeln('Äî:');
   for i:=1 to x do
    write(mas[i]:4);
  end;
 
//------ Search ------//
 procedure Search;
  begin
   count:=x;
   for i:=1 to count do
    for j:=i+1 to count do
     if mas[i] = mas[j]
      then
       begin
        for k:=j to x-1 do
         mas[k]:=mas[k+1];
        count:=count-1;
       end;
  end;
  
//---- Output_data ------//
 procedure Output_data;
  begin
   writeln;
   writeln('Ïîñëå: ');
   for i:=1 to count do
    write(mas[i]:4);
  end;
 
begin
  ClrScr;
  Input_data;
  Filling;
  Search;
  Output_data;
end.
0
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
09.06.2009, 11:14 3
EvgeniiSp, я Вас не критикую, но тема у CePryH, "Динамические структуры данных", а тот код который привели Вы является решением для простого одномерного массива.
0
149 / 139 / 57
Регистрация: 05.06.2009
Сообщений: 310
09.06.2009, 11:17 4
Извиняюсь, был не прав.
0
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 8
09.06.2009, 18:46  [ТС] 5
Да через простой одномерный сделать не сложно ((Надо через "Списки"... время продлилось чуть... может и сам сделаю... но если кто сможет то хоть подскажите..)) или напишите программу с комментами(что б понял суть...)..) Спасибо заранее
0
149 / 139 / 57
Регистрация: 05.06.2009
Сообщений: 310
11.06.2009, 11:06 6
Так думаю правильно.
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
program EvgeniiSp;
uses Crt;
Type
 series = ^mas;
 mas =
  record
   numb: integer;
   next: series;
  end;
  
var
 flag: boolean;
 x,i,digit: integer;
 ser,ser0,start,del: series;
 
//------ Input_data ------//
 procedure Input_data;
  begin
   write('Ââåäèòå ÷èñëî ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè x: ');
   readln(x);
  end;
 
//------ Creat_list ------//
 procedure Creat_list;
  begin
   New(ser);
   ser^.next:=nil;
   ser^.numb:=random(40)-10;
   start:=ser;
  end;
  
//------ Filling_list ------//
 procedure Filling_list;
  begin
   for i:=1 to x-1 do
    begin
     New(ser^.next);
     ser:=ser^.next;
     ser^.next:=nil;
     ser^.numb:=random(40)-10;
    end;
   write('Äî: ');
   ser:=start;
   while ser <> nil do
    begin
     write(ser^.numb,' ');
     ser:=ser^.next;
    end;
  end;
 
//------ Search ------//
 procedure Search;
  begin
   ser0:=start;
   while ser0 <> nil do
    begin
     ser:=ser0^.next;
     while ser <> nil do
      begin
       flag:=true;
       digit:=ser^.numb;
       if ser0^.numb = digit
        then
         begin
          del^.next:=ser^.next;
          Dispose(ser);
          ser:=del^.next;
          flag:=false;
         end;
       if flag = true
        then
         begin
          del:=ser;
          ser:=ser^.next;
         end;
      end;
      ser0:=ser0^.next;
    end;
  end;
  
//---- Output_data ------//
 procedure Output_data;
  begin
   writeln;
   write('Ïîñëå: ');
   ser:=start;
   while ser <> nil do
    begin
     write(ser^.numb,' ');
     ser:=ser^.next;
    end;
  end;
 
begin
  ClrScr;
  Input_data;
  Creat_list;
  Filling_list;
  Search;
  Output_data;
end.
Добавлено через 45 секунд
Это задание 1 (Списки).
1
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
11.06.2009, 12:17 7
На взгляд недочёт: в процедурах используете глобальные переменные-это не есть хорошо.
А так - ничего.
0
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 8
11.06.2009, 12:56  [ТС] 8
Спасибо... ещё осталось деревья
0
149 / 139 / 57
Регистрация: 05.06.2009
Сообщений: 310
11.06.2009, 12:58 9
Деревья может сделаю поздно вечером, если время будет.
0
149 / 139 / 57
Регистрация: 05.06.2009
Сообщений: 310
13.06.2009, 14:57 10
Задание 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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
Program EvgeniiSp;
Uses Crt;
Type
 TrLink = ^Tree;
 Tree =
  record
   Data : integer;
   Left, Right : TrLink;
  end;
 
var
 TrRoot,Tr: TrLink;
 key,node: integer;
 
//-------- Input_data --------//
 procedure Input_data;
  begin
   write('Ââåäèòå êîëè÷åñòâî óçëîâ ñîçäàâàåìîãî äåðåâà: ');
   readln(node);
   write('Ââåäèòå êëþ÷(1-10) äëÿ ïîèñêà äëèíû ïóòè: ');
   readln(key);
  end;
 
//-------- Creat_tree --------//
 procedure Creat_tree;
  var
   flag: boolean;
   i,digit: integer;
  begin
//-----------------------
   digit:=random(10);
   New(Tr);
   with Tr^ do
    begin
     left:=nil;
     right:=nil;
     data:=digit;
    end;
   TrRoot:=Tr;
//-----------------------
   for i:=2 to node do
    begin
     flag:=true;
     digit:=random(10);
     while flag <> False do
      if Tr = nil
       then
        begin
         New(Tr);
         with Tr^ do
          begin
           left:=nil;
           right:=nil;
           data:=digit;
           flag:=false;
          end;
        end
       else
        if digit <= Tr^.data
         then Tr:=Tr^.left
         else Tr:=Tr^.right;
    end;
  end;
 
//-------- Search_key --------//
 procedure Search_key;
  var
   way: integer;
   entry: boolean;
   TrParent: TrLink;
  begin
   way:=-1;
   entry:=false;
   Tr:=TrRoot;
   while Tr <> nil do
    begin
     way:=way+1;
     if key = Tr^.data
      then
       begin
        entry:=true;
        Exit;
       end;
     if key < Tr^.data
      then Tr:=Tr^.left
      else Tr:=Tr^.right;
    end;
   if entry = true
    then writeln('Äëèíà ïóòè îò êîðíÿ äî áëèæàéøåé âåðøèíû ñ çàäàííûì êëþ÷îì ðàâíà ',way,'.')
    else writeln('Êëþ÷ ',key,' â äåðåâå ïîèñêà íå íàéäåí.');
  end;
 
begin
 ClrScr;
 Input_data;
 Creat_tree;
 Search_key;
end.
Но есть одна проблема. Кто-нибудь знающий, подскажите, пожалуйста, следующее...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
while Tr <> nil do
    begin
     way:=way+1;
     if key = Tr^.data
      then
       begin
        entry:=true;
        Exit;
       end;
     if key < Tr^.data
      then Tr:=Tr^.left
      else Tr:=Tr^.right;
    end;
в данном цикле после первого прохода цикла переменная Tr становится равной nil и дальнейшего поиска ключа в дереве не происходит, в чем здесь ошибка и как от нее избавиться?
1
13.06.2009, 14:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2009, 14:57
Помогаю со студенческими работами здесь

Деревья и списки
Доброго времени суток! Очень прошу помочь с програмкой(вроде лёгкая, но в голову вообще ничего не...

Списки и деревья.
Помогите пожалуйста сделать задачку на С++: Написать программу, которая вводит с клавиатуры...

Списки и деревья
Помогите пожалуйста написать программу в visual studio 2005.Само задание:Написать программу,которая...

Списки и Деревья
Есть ли у кого-нибудь сборник задач по данным темам.Чтобы все в одном месте,желательно с пояснениям...

Списки и деревья
Помогите, плиз... чет у меня не получается с ней ничего((( Написать программу, которая вводит с...

деревья и списки
Считать элементы заданного дерева в список: при обходе &quot;в глубину&quot;; обход в глубину ясен,как...


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

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

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