Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.95
Neorrawr
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 10
#1

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

27.09.2012, 18:20. Просмотров 2677. Ответов 7
Метки нет (Все метки)

Здравствуйте.

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

Основной .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 ==========
Файлы классов присоединены к программе, но ошибки выдаются всё равно. В чём может быть проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2012, 18:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Динамические структуры данных (C++):

Динамические структуры данных. Программа ввода в структуры и вывода информации из неё.
Автоматизированная информационная система на железнодорожном вокзале содержит...

Динамические структуры данных
Здравствуйте! Помогите, с заданием, я не понял, как написать код правильный. ...

Динамические структуры данных
(можно с пояснением,что-то не понимаю) Есть строка символов, признаком конца...

Динамические структуры данных
Доброе утро всем. Возникли вопросы по динамическим структурам. Вот на примере...

Динамические структуры данных
Создать линейный односвязный список. Заменить последний элемент на другой,...

Динамические структуры данных
Выполнить задания 3 способами: с использованием стека, очереди, дека. Описание...

7
Elfenlide
23 / 23 / 11
Регистрация: 15.04.2012
Сообщений: 183
27.09.2012, 18:55 #2
Цитата Сообщение от Neorrawr Посмотреть сообщение
Файлы классов присоединены к программе, но ошибки выдаются всё равно. В чём может быть проблема?
По идее в основной фаил должен быть подключён ещё и node.cpp а он у вас нигде не подключен, ведь программа начинает работу c main и постепенно переходит куда нужно, а в основном файле у вас он получаеться не знает где эти конструктора итд...Хотя может я и ошибаюсь на счёт подключения cpp....
но попробовать стоит.
И ещё, у вас такие ошибки типа "Insert: невозможно преобразовать параметр 1 из "Node *" в "Node" " вы уверены что в коде ошибок нету?
Вы пробовали всё запихнуть просто в один файл и проверить работу программы? Если всё работает, тро мне кажеться что дело в cpp
1
Neorrawr
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 10
28.09.2012, 15:29  [ТС] #3
Цитата Сообщение от Elfenlide Посмотреть сообщение
По идее в основной фаил должен быть подключён ещё и node.cpp а он у вас нигде не подключен, ведь программа начинает работу c main и постепенно переходит куда нужно, а в основном файле у вас он получаеться не знает где эти конструктора итд...Хотя может я и ошибаюсь на счёт подключения cpp....
но попробовать стоит.
Подключил файл — абсолютно те же ошибки. Другая подобная программа превосходно работает без этого подключения. Подключил через интерфейс среды Visual Studio файлы классов и всё. Не понимаю, в чём здесь может быть проблема, но уверен, что для здешних специалистов это пустяк. Где-то что упущено, что-то не так сделано. Знать бы что.
Цитата Сообщение от Elfenlide Посмотреть сообщение
И ещё, у вас такие ошибки типа "Insert: невозможно преобразовать параметр 1 из "Node *" в "Node" " вы уверены что в коде ошибок нету?
Не уверен, но у другого человека программа как-то работала именно с таким кодом. Без каких-либо изменений.
Цитата Сообщение от Elfenlide Посмотреть сообщение
Вы пробовали всё запихнуть просто в один файл и проверить работу программы? Если всё работает, тро мне кажеться что дело в cpp
Не пробовал и, кажется, ни к чему хорошему это не приведёт.
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
28.09.2012, 15:37 #4
C++
1
2
3
4
5
struct Node
{
int data;
struct Node *next;
};
Хотя на нормальном компиляторе обязано работать и без явного указания struct.
0
Neorrawr
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 10
28.09.2012, 16:29  [ТС] #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 ==========
0
Neorrawr
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 10
29.09.2012, 16:44  [ТС] #6
Ну так что? =/
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
01.10.2012, 18:25 #7
Neorrawr, http://liveworkspace.org/code/4edc55f4fc9844331fcb369159bfb7a5 Как видно - все ок. Чините компилятор свой.
1
Neorrawr
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 10
01.10.2012, 20:11  [ТС] #8
Спасибо.
0
01.10.2012, 20:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2012, 20:11
Привет! Вот еще темы с решениями:

Динамические структуры данных на языке С/С++
Сформировать динамическую структуру,содержащую данные по студентам в следующем...

Задача на динамические структуры данных
Прошу помочь с выполнением задания. Дан одномерный динамический массив А,...

Динамические структуры данных на языке С/С++
Сформировать динамическую структуру (вид структуры выбирается по варианту из...

Динамические структуры данных.Стек.
Доброго времени суток. Нужна помощь в выполнении лабораторной работы...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru