Форум программистов, компьютерный форум CyberForum.ru

Сравнение элементов двух однонаправленных линейных списков - C++

Восстановить пароль Регистрация
 
Uz
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 22
29.08.2012, 16:15     Сравнение элементов двух однонаправленных линейных списков #1
А как сравнить элементы двух списков? Чтобы при совпадении элементов счётчик прибавлял единичку? Если список вот так задан:
C++
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
#include <iostream>
#include <conio.h>
#include <fstream> 
using namespace std;
struct Element //Структура с инфополями и адресным полем
{
 int x; //Инфополе. Значения из x будут передаваться в список
 Element *Next; //Адресное поле
};
class Spisok
{
 Element *Head; 
 Element *Tail;
public:
 Spisok():Head(NULL),razmer(0) {}; //Инициализация значений с помощью конструктора
 ~Spisok();
 void Add(int x); 
 void Show();
 int razmer;
 Element* getHead(); // метод для получения указателя на начало списка.  
};
Spisok::~Spisok() //Деструктор 
{
 while (Head!=NULL)  //Пока по адресу не пусто 
    {    
     Element *temp=Head->Next; //Временная переменная для хранения адреса следующего элемента
     delete Head; //Освобождаем адрес, обозначающий начало
     Head=temp; //Меняем адрес на следующий
    }
}
Element* Spisok::getHead()
{
 return Head; // возвращает указатель на начало списка.
}
void Spisok::Add(int x) //Функция добавления элементов в список
{ 
 Element *temp=new Element; //При каждом вызове выделяется память
 if(Head == NULL)
 Head = temp;
 else
 Tail->Next = temp;
 temp->x=x;
 temp->Next = NULL;
 Tail=temp;
 ++razmer;
}
void Spisok::Show()
{
 Element *Temp = Head;
 while(Temp != NULL)
    {
     cout << Temp->x << " ";
     Temp = Temp->Next;
    }
 cout << endl << "Количество элементов в списке равно:" << razmer << endl;
}
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2012, 16:15     Сравнение элементов двух однонаправленных линейных списков
Посмотрите здесь:

C++ Сравнение элементов двух двумерных массивов
Сравнение элементов двух двумерных массивов C++
C++ Сравнение двух списков
Реализация алгоритма Рабина-Карпа для двух однонаправленных линейных списков C++
C++ Сортировка линейных(односвязных) списков
Объединение двух списков в один без повтора элементов (С++) C++
C++ Сравнение двух элементов вектора
C++ Сравнить элементы линейных списков
C++ Сравнение элементов двух массивов
Организовать представление множеств в виде линейных однонаправленных списков C++
Сравнение 2-х списков и удаление одинаковых элементов из 2-го списка C++
C++ Сравнение двух списков, на основе vector <string>

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
29.08.2012, 18:48     Сравнение элементов двух однонаправленных линейных списков #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int compare(Element* e1, Element* e2)
{
    if (sizeof(e1) != sizeof(e2))
        return -1;
 
    int count = 0;
    while (e1 != NULL && e2 != NULL)
    {
        if (e1->x == e2->x) count++;
        e1 = e1->Next;
        e2 = e2->Next;
    }
}
Yandex
Объявления
29.08.2012, 18:48     Сравнение элементов двух однонаправленных линейных списков
Ответ Создать тему
Опции темы

Текущее время: 22:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru