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

Линейный однонаправленный список - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Даны два натуральных числа a, b. Найти разность и произведение суммы цифр этих чисел http://www.cyberforum.ru/cpp-beginners/thread646898.html
Даны два натуральных числа a, b. Найти разность и произведение суммы цифр этих чисел. Вычисление суммы цифр числа оформить в виде функции.
C++ Подскажите что означает /= Начал читать книгу для начинающих по с++, в одном из примеров встретил код вида Mxx/=N; Mxy/=N; My/=N; Mx/=N; Наверное, /= что-то настолько очевидное, что авторы забыли про него упоминуть. http://www.cyberforum.ru/cpp-beginners/thread646894.html
Хеш строки C++
Как можно получить хеш строки на C++ с использованием только стандартных библиотек? Думал так: unsigned long long hash(char *str,size_t size) { int seed = 31 //abcd... unsigned long long result = 0; for (size_t idx=0;idx<size;idx++) { result = result + pow(double(seed),double(i))*s; } return result; }
Проверка типа (typeid) C++
Подскажите пожалуйста как можно правильно реализовать такую вещь: если тип переменной и == int то.... нагуглил функцию: typeid(i).name(); которая выводит тип переменной, написал: #include "stdafx.h" #include <conio.h> #include <typeinfo.h> #include <iostream>
C++ Как проверить правильно ли ты создал дистрактор http://www.cyberforum.ru/cpp-beginners/thread646825.html
сабжж ???
C++ Как проверить, правильно ли создан copy-конструктор? сабжж ?? подробнее

Показать сообщение отдельно
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.09.2012, 22:55     Линейный однонаправленный список
Код
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
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
102
103
104
105
106
107
108
109
110
111
112
113
#include<stdlib.h>
#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>
using namespace std;
 
struct Node
{
   int it;
   struct Node *next;
};
 
Node *front1 = NULL; // начало первого списка
Node *rear1  = NULL; // конец  первого списка
Node *front2 = NULL; // начало второго списка
Node *rear2  = NULL; // конец  второго списка
 
bool openfileandread(Node *&front, Node *&rear)
{
   string filename;
   cout << "Введите имя файла для чтения данных в список\n";
   getline(cin, filename);
   
   ifstream f(filename.c_str());
   if (!f.is_open()) 
   {
        cout << "Error 1!"; 
        return false;
   }
   
   while (!f.eof())
   {
        Node *add = new Node; // новый элемент списка
        if (add == NULL) // если память не выделена
        {
            cout << "Error 2!" << endl;
            return false;
        } 
 
        f >> add -> it;
        add -> next = NULL;
        
        if (front == NULL) // если список пустой, то в начало
        {
            front = add; // front начало списка
            rear = front; // rear пока начало и конец
        }
        else
            rear -> next = add; // если список не пустой, то в конец
        rear = add; // rear конец списка
    }
   
   f.close();
   return true;
}
 
void printNode(Node *front)
{
    Node *Curr;
    Curr = front;
    cout << '\n';
    while (Curr != NULL)
    {
        cout << Curr -> it << endl;
        Curr = Curr -> next;
    }
}
 
void sliyanie(Node *fr1, Node  *fr2) 
{    
    while (fr1 != NULL && fr2 != NULL)
    {
        Node *temp1 = fr1 -> next;
        fr1 -> next = fr2;
        if (temp1 == NULL) break;
                              Node *temp2 = fr2 -> next;
                              fr2 -> next = temp1;
        fr1 = temp1;
        fr2 = temp2;
    }
}
 
void ydalenie(Node *front)
{
    Node *temp;
    while (front != NULL)
    {
        temp = front -> next;
        delete front;
        front = temp;
    }
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    openfileandread(front1, rear1);
    openfileandread(front2, rear2);
    
    printNode(front1);
    printNode(front2);
 
    sliyanie(front1, front2);
    printNode(front1);
 
    ydalenie(front1);
 
system("pause");
return 0;
}
 
Текущее время: 09:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru