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

Линейный поиск в массиве и списке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Чтение из файла http://www.cyberforum.ru/cpp-beginners/thread963019.html
Как вывести содержимое ранее созданных файлов на на экран? Вот кусок кода. Открыть то я открыл, а построчно вывести не могу, не знаю что написать) do { scanf("%i", &k); switch(k) { case 1: {file = fopen(FileName,"r"); break; } case 2: {file = fopen(FileNameR,"r"); break; } case 3: {system("cls"); main();} }
C++ Нужно отсортировать методом Шелла с++ #include "stdafx.h" #include <iostream> #include<cstdlib> #include<ctime> using namespace std; int main () {const int n=3;const int m=3; int a; srand(time(NULL)); int i,j; http://www.cyberforum.ru/cpp-beginners/thread963013.html
Быстрый поиск супернатуральных чисел C++
Натуральное число будем называть супернатуральным, если в своем десятичном виде оно не содержит единиц, а произведение всех его цифр равно n. Для заданного n выясните, сколько существует супернатуральных чисел. Технические условия Входные данные: Содержит одно целое число n, не превосходящее 2×109. Выходные данные: Вывести количество супернатуральных чисел по модулю 101. Информация о...
C++ Найти координаты четвертой вершины параллелограмма
Привет всем. Вот задали совсем простенькую задачку: Известно, что точки с координатами (x1, y1), (x2, y2), (x3, y3) являются тремя вершинами некоторого параллелограмма. Найти координаты четвертой вершины. Все бы хорошо, но я не знаю как ее решить, не как написать код, а саму геометрическую часть, т.е. алгоритм, помогите пожалуйста :)
C++ Чёрный ящик или белый ящик http://www.cyberforum.ru/cpp-beginners/thread962982.html
Всем привет. Задали программу написать a + b и сумму вывести в файл, а птом протестировать либо на чёрный ящик, либо на белый ящик. Я лекции прочитал и инфу. в нете, вроде понял , а как писать не знаю. вот код программы подкиньте идеи и код(тестора) , в первый раз на наглядном примере будет легче понять и разобраться спасибо - НАРОД. #include <stdio.h> long a,b; int main(){ ...
C++ Как реализировать заполнение массива квадратами? Я создал програму которая заполняет двумерный масив символами 35, а потом в рандомных местах создает прямоугольники символами 46, мне нужно чтобы все квадраты были связаны друг с другом линиями из знаков 46, как это осуществить? подробнее

Показать сообщение отдельно
whhandrey
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 14

Линейный поиск в массиве и списке - C++

26.09.2013, 17:49. Просмотров 1036. Ответов 3
Метки (Все метки)

Добрый день, дорогие форумчане!
Имеется программа, которая должна выполнять линейный поиск по ключу в массиве и списке, но функция поиска LinearSearch должна быть шаблонной.
Функцию саму написал, с массивом работает на ура, но в самом списке я не знаю как перегрузить операторы, что бы она работала со списком. Перегрузить нужно оператор ==, ибо компилятор ругается на него и оператор индексации (иначе как обращаться к элементу списка)

Наработки:

Сама функция поиска
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template <class Type>
int LinearSearch(Type *object, int key, int N)
{
    int i;
    bool a=false;
    for(i=0; i<N; i++)
    {
        if(object[i] == key)
        {
            a=true;
            break;
        }
    }
    if(a==true)
        return i;
    else
        return -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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
class List
{
private:
    Node *head;
    Node *current;
    Node *tail;
    int N;
public:
    List()
    {
        head = new Node;
        current = new Node;
        tail = new Node;
        head->left=0;
        tail->right=0;
        head=tail;
        current=0;
    }
    ~List(){}
    void SetOnHead() {current = head;}
    void SetOnTail() {current = tail;}
    void SetNext() {current = current->right;}
    void SetPrev() {current = current->left;}
    int GetValue() { return current->value;}
    void InputList(int N)
    {
        this->N = N;
        int i=0;
        Node *q = new Node;
        q->value=i*2;
        q->left=0;
        q->right=0;
        head = q;
        current=head;
        for(i=1; i<N; i++)
        {
            Node *n = new Node;
            n->value = i*2;
            n->right = 0;
            n->left=current;
            current->right = n;
            tail=n;
            current=n;
        }
    }
    void ShowList()
    {
        current = head;
        while(current->right!=0)
        {
            std::cout<<current->value<<" ";
            current=current->right;
        }
        std::cout<<std::endl;
    }
        // вот тут фигня какая-то..
    int operator [](int index)
    {
        current = head;
        for(int i=0; i<index; i++)
        {
            current=current->right;
        }
        return current->value;
    }
    friend std::ostream& operator<<(std::ostream& os, List const& ls)
    {
        return os<<ls.current->value;
    }
    friend bool operator ==(const List &left, const int &right)
    {
        if(left.current->value==right)
            return true;
        else return false;
    }
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru