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

[C++] Динамические структуры данных - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.95
Neorrawr
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 10
27.09.2012, 18:20     [C++] Динамические структуры данных #1
Здравствуйте.

Есть такой код в таких файлах:

Основной .cpp-файл программы
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
#include "stdafx.h"
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <iostream>
#include "node.h"
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
Node *head = NULL;
Node *head2 = NULL;
int menu;
do
{
cout << "1. Insert;" << endl << "2. Delete;" << endl << "3. Print;" << endl << "0. Exit." << endl;
cout << "Enter number: ";
cin >> menu;
switch(menu)
{
case 1:
{
cout << "Enter the date: ";
int item;
cin >> item;
head = Insert(head, item);
}
break;
case 2:
{
cout << "Enter the element you want to delete: ";
int s;
int a = 0;
cin >> s;
for(int i = 0; i < s; i++)
{
if(i==s)
head = Delete(head, a);
else
{
head2 = Insert(head2, a);
head = Delete(head, a);         
}
}
for(int i = 0; i < s - 1; i++)
{
head2 = Delete(head2, a);
head = Insert(head, a);
}
}
break;
case 3:
{
Print(head);
}
break;
case 0:
{
cout << "good by ";
}
break;
default:
{
}
break;
}
}
while(menu!=0);
return 0;
}
Node.cpp
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
#include "stdafx.h"
#include <iostream>
#include "node.h"
using namespace std;
 
Node *Insert(Node *head, int item)
{
Node *x=new Node();
x -> data = item;
x -> next = NULL;
if(head==NULL)
{
head = x;
}
else
{
x -> next = head;
head = x;       
}
return head;
}
Node *Delete(Node *head, int &a)
{
Node *current=head;
{
if(current -> next==NULL)
{
head = NULL;
return head;
}
else
{
a = current -> data;
head = current -> next;
delete current;
return head;
}
}
}
void Print (Node *head)
{
if(head!=NULL)
{
cout << head -> data << endl;
Print(head -> next);
}
}
Node.h
C++
1
2
3
4
5
6
7
8
struct Node
{
int data;
Node *next;
};
Node *Insert(Node *head, int data);
Node *Delete(Node *head, int &a);
void Print (Node *head);
Проблема в том, что компилятор выдаёт такие ошибки:
Код
1>------ Построение начато: проект: Практическая работа № 2, Конфигурация: Debug Win32 ------
1>Построение начато 26.09.2012 21:57:05.
1>InitializeBuildStatus:
1>  Обращение к "Debug\Практическая работа № 2.unsuccessfulbuild".
1>ClCompile:
1>  Для всех выходных данных обновления не требуется.
1>  Практическая работа № 2.cpp
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\node.h(4): error C2460: Node::next: использует "Node", определяемый в настоящий момент
1>          h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\node.h(2): см. объявление "Node"
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\практическая работа № 2.cpp(26): error C2664: Insert: невозможно преобразовать параметр 1 из "Node *" в "Node"
1>          Ни один конструктор не смог принять исходный тип, либо разрешение перегрузки конструктора неоднозначно
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\практическая работа № 2.cpp(38): error C2664: Delete: невозможно преобразовать параметр 1 из "Node *" в "Node"
1>          Ни один конструктор не смог принять исходный тип, либо разрешение перегрузки конструктора неоднозначно
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\практическая работа № 2.cpp(41): error C2664: Insert: невозможно преобразовать параметр 1 из "Node *" в "Node"
1>          Ни один конструктор не смог принять исходный тип, либо разрешение перегрузки конструктора неоднозначно
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\практическая работа № 2.cpp(42): error C2664: Delete: невозможно преобразовать параметр 1 из "Node *" в "Node"
1>          Ни один конструктор не смог принять исходный тип, либо разрешение перегрузки конструктора неоднозначно
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\практическая работа № 2.cpp(47): error C2664: Delete: невозможно преобразовать параметр 1 из "Node *" в "Node"
1>          Ни один конструктор не смог принять исходный тип, либо разрешение перегрузки конструктора неоднозначно
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\практическая работа № 2.cpp(48): error C2664: Insert: невозможно преобразовать параметр 1 из "Node *" в "Node"
1>          Ни один конструктор не смог принять исходный тип, либо разрешение перегрузки конструктора неоднозначно
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\практическая работа № 2.cpp(54): error C2664: Print: невозможно преобразовать параметр 1 из "Node *" в "Node"
1>          Ни один конструктор не смог принять исходный тип, либо разрешение перегрузки конструктора неоднозначно
1>  Node.cpp
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\node.h(4): error C2460: Node::next: использует "Node", определяемый в настоящий момент
1>          h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\node.h(2): см. объявление "Node"
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\node.cpp(17): error C2440: =: невозможно преобразовать "Node *" в "int"
1>          Не существует контекста, в котором такое преобразование возможно
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\node.cpp(34): error C2440: =: невозможно преобразовать "int" в "Node *"
1>          Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\node.cpp(45): error C2665: Print: ни одна из 2 перегрузок не может преобразовать все типы аргументов
1>          h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\node.h(8): может быть "void Print(Node)"
1>          h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\node.cpp(40): или       "void Print(Node *)"
1>          при попытке сопоставить список аргументов "(int)"
1>  Создание кода...
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:01.67
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Файлы классов присоединены к программе, но ошибки выдаются всё равно. В чём может быть проблема?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Elfenlide
23 / 23 / 1
Регистрация: 15.04.2012
Сообщений: 183
27.09.2012, 18:55     [C++] Динамические структуры данных #2
Цитата Сообщение от Neorrawr Посмотреть сообщение
Файлы классов присоединены к программе, но ошибки выдаются всё равно. В чём может быть проблема?
По идее в основной фаил должен быть подключён ещё и node.cpp а он у вас нигде не подключен, ведь программа начинает работу c main и постепенно переходит куда нужно, а в основном файле у вас он получаеться не знает где эти конструктора итд...Хотя может я и ошибаюсь на счёт подключения cpp....
но попробовать стоит.
И ещё, у вас такие ошибки типа "Insert: невозможно преобразовать параметр 1 из "Node *" в "Node" " вы уверены что в коде ошибок нету?
Вы пробовали всё запихнуть просто в один файл и проверить работу программы? Если всё работает, тро мне кажеться что дело в cpp
Neorrawr
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 10
28.09.2012, 15:29  [ТС]     [C++] Динамические структуры данных #3
Цитата Сообщение от Elfenlide Посмотреть сообщение
По идее в основной фаил должен быть подключён ещё и node.cpp а он у вас нигде не подключен, ведь программа начинает работу c main и постепенно переходит куда нужно, а в основном файле у вас он получаеться не знает где эти конструктора итд...Хотя может я и ошибаюсь на счёт подключения cpp....
но попробовать стоит.
Подключил файл — абсолютно те же ошибки. Другая подобная программа превосходно работает без этого подключения. Подключил через интерфейс среды Visual Studio файлы классов и всё. Не понимаю, в чём здесь может быть проблема, но уверен, что для здешних специалистов это пустяк. Где-то что упущено, что-то не так сделано. Знать бы что.
Цитата Сообщение от Elfenlide Посмотреть сообщение
И ещё, у вас такие ошибки типа "Insert: невозможно преобразовать параметр 1 из "Node *" в "Node" " вы уверены что в коде ошибок нету?
Не уверен, но у другого человека программа как-то работала именно с таким кодом. Без каких-либо изменений.
Цитата Сообщение от Elfenlide Посмотреть сообщение
Вы пробовали всё запихнуть просто в один файл и проверить работу программы? Если всё работает, тро мне кажеться что дело в cpp
Не пробовал и, кажется, ни к чему хорошему это не приведёт.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.09.2012, 15:37     [C++] Динамические структуры данных #4
C++
1
2
3
4
5
struct Node
{
int data;
struct Node *next;
};
Хотя на нормальном компиляторе обязано работать и без явного указания struct.
Neorrawr
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 10
28.09.2012, 16:29  [ТС]     [C++] Динамические структуры данных #5
Казалось бы уже всё, но нет:
Код
1>------ Построение начато: проект: Практическая работа № 2, Конфигурация: Debug Win32 ------
1>Построение начато 28.09.2012 16:25:48.
1>InitializeBuildStatus:
1>  Обращение к "Debug\Практическая работа № 2.unsuccessfulbuild".
1>ClCompile:
1>  Для всех выходных данных обновления не требуется.
1>  Практическая работа № 2.cpp
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\практическая работа № 2.cpp(26): error C3861: Insert: идентификатор не найден
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\практическая работа № 2.cpp(38): error C3861: Delete: идентификатор не найден
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\практическая работа № 2.cpp(41): error C3861: Insert: идентификатор не найден
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\практическая работа № 2.cpp(42): error C3861: Delete: идентификатор не найден
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\практическая работа № 2.cpp(47): error C3861: Delete: идентификатор не найден
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\практическая работа № 2.cpp(48): error C3861: Insert: идентификатор не найден
1>h:\папка\папка\папка\практическая работа № 2\практическая работа № 2\практическая работа № 2.cpp(54): error C3861: Print: идентификатор не найден
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:00.90
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Neorrawr
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 10
29.09.2012, 16:44  [ТС]     [C++] Динамические структуры данных #6
Ну так что? =/
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
01.10.2012, 18:25     [C++] Динамические структуры данных #7
Neorrawr, http://liveworkspace.org/code/4edc55...cb369159bfb7a5 Как видно - все ок. Чините компилятор свой.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2012, 20:11     [C++] Динамические структуры данных
Еще ссылки по теме:

Динамические структуры данных C++
Динамические структуры данных. C++
C++ Динамические структуры данных

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

Или воспользуйтесь поиском по форуму:
Neorrawr
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 10
01.10.2012, 20:11  [ТС]     [C++] Динамические структуры данных #8
Спасибо.
Yandex
Объявления
01.10.2012, 20:11     [C++] Динамические структуры данных
Ответ Создать тему
Опции темы

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