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

Список: Удаление всех подряд идущих одинаковых элементов из списка

05.03.2013, 19:28. Показов 1728. Ответов 2
Метки нет (Все метки)

Помогите пожалуйста реализовать процедуру удаления всех подряд идущих одинаковых элементов из списка. Заранее огромное спасибо!

Добавлено через 18 часов 51 минуту
Помогите пожалуйста, очень надо...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2013, 19:28
Ответы с готовыми решениями:

Удаление подряд идущих одинаковых элементов массива
В целочисленном массиве удалить все подряд идущие одинаковые элементы.

Функция: найти количество троек подряд идущих одинаковых элементов списка
написать функцию, вычисляющую количество троек подряд идущих элементов числового списка, в каждой...

Удаление строк, в которых 3 или более подряд идущих одинаковых элементов
Задана матрица размером NxM. Удалить те строки, в которых встречается 3 или более подряд идущих...

Удаление двух подряд идущих элементов односвязного списка
Всем привет! Нужно создать метод шаблонного класса List, который бы удалял 2 подряд идущих...

2
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
05.03.2013, 20:13 2
Обычный цикл, перебираешь, новый элемент сравниваешь с предыдущим, если они равны, удаляешь.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32488 / 20974 / 8115
Регистрация: 22.10.2011
Сообщений: 36,243
Записей в блоге: 7
05.03.2013, 20:54 3
Лучший ответ Сообщение было отмечено volvo как решение

Решение

список задан так:

Delphi
1
2
3
4
5
6
type
   tlist = ^item;
   item = record
      value : integer;
      prev, next : tlist;
   end;
Удаление всех дубликатов, идущих подряд:

Delphi
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
procedure removeduplicates(var head : tlist);
 
   function removeitem(var head : tlist; p : tlist) : tlist; // доп. функция для удаления одного элемента
   var t : tlist;
   begin
      t := p^.prev;
      if t <> nil then t^.next := p^.next
      else head := p^.next;
 
      t := p^.next;
      if t <> nil then t^.prev := p^.prev;
 
      result := t;
      dispose(p);
      p := nil
   end;
 
var
   p, t : tlist;
   b : boolean;
begin
   p := head;
   b := false;
   while (p <> nil)  do
      if (p^.next <> nil) and (p^.value = p^.next^.value) then
      begin
         b := true;
         removeitem(head, p^.next);
      end
      else
         if b then
         begin
            p := removeitem(head, p);
            b := false;
         end
         else p := p^.next;
end;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2013, 20:54
Помогаю со студенческими работами здесь

Задача про линию шариков (удаление со сдвигом 3х и более одинаковых подряд идущих)
В одной компьютерной игре игрок выставляет в линию шарики разных цветов. Когда образуется...

Задача про линию шариков (удаление со сдвигом 3х и более одинаковых подряд идущих)
В одной компьютерной игре игрок выставляет в линию шарики разных цветов. Когда образуется...

процедура нахождения подряд идущих одинаковых элементов
Помогите ребят написать процедуру &quot;нахождения группы подряд идущих одинаковых элементов&quot;.А задание...

В списке из подряд идущих одинаковых элементов оставить первый
Дан список из n целых чисел а1, а2, ... , аn. Из группы подряд идущих элементов с одинаковыми...


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

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

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