Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
artov94
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 9
#1

Ошибка в односвязном списке - C++

31.03.2013, 22:59. Просмотров 379. Ответов 4
Метки нет (Все метки)

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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include<iostream>
#include<clocale>
using namespace std;
#define DEBUG 
 
 
 
class Monom{
protected:
    int Step,Kof;
public:
    Monom() {}
    ~Monom() {}
    void put_Step(int S) { Step=S; }
    void put_Kof(int K) { Kof=K; }
    int get_Step() { return Step; }
    int get_Kof() { return Kof; }
};
 
 
class Node{
    Monom *info;
public:
    Node() {}
    ~Node() {}
    Node *next;
    int count;
 
};
typedef Node *PNode;
PNode Head = NULL;
class Polinom{
    int rezult;
    int parametr;
public:
    Polinom() {}
    ~Polinom() {}
    void put_rezult() { cin>>rezult; }
    void put_parametr() { cin>>parametr; }
    int get_parametr() { return parametr; }
    int get_rezult() { return rezult; }
};
///////////////////////////////////////////////////////////////
PNode Crererewtr ();
void analizator();
void make_node(Node*);
void AddFirst (PNode, PNode) ;
void AddLast(PNode, PNode);
void AddAfter (PNode, PNode);
Monom First;
////////////////////////////////////////////////////////////////
int main()
{  
 
    setlocale(LC_ALL,"Russian");
    cout<<"Start >";
    cout.width(25);
    cout<<123<<"< End\n";
    //analizator();
    return 0;
}
 
void analizator()
{
 
    char ar[256]={0},*ptr=ar;
    int i=0,n=0;
    cin.getline(ar,256);
    while (*ptr!=0)
        if (*ptr++=='x')
            n++;
    ptr=ar;
 
    while (*ptr!=0){
        cout<<*ptr;
        ptr++;
    }
    ptr=ar;
    First.put_Kof(atoi(ptr));
 
    do ptr++;
    while (*ptr!='^');
    ptr++;
    First.put_Step(atoi(ptr));
    cout<<endl<<First.get_Kof();
    cout<<endl<<First.get_Step();
    cout<<endl<<n<<endl;
    return;
}
 
//void make_node(Node *ptr=NULL)
//{
//    Monom *m;
//  Node *p;
//  m=new Monom;
//  p=new Node;
//  *ptr->next = p;
//
//  return;
//}
PNode Crererewtr (  ) 
{ 
    PNode NewNode = new Node; 
    NewNode->count = 1; 
    NewNode->next = NULL; 
    return NewNode; 
}
 
void AddLast(PNode &Head, PNode NewNode) 
{ 
    PNode q = Head; 
    if (Head == NULL) { 
        AddFirst(Head, NewNode); 
        return; 
    } 
    while (q->next) q = q->next; 
    AddAfter(q, NewNode); 
}
 
 
void AddFirst (PNode &Head, PNode NewNode) 
{ 
    NewNode->next = Head; 
    Head = NewNode; 
}
 
void AddAfter (PNode p, PNode NewNode) 
{ 
    NewNode->next = p->next; 
    p->next = NewNode; 
}
Собственно что говорит компилятор.


3 IntelliSense: существует более одного экземпляра перегруженная функция "AddFirst", соответствующего списку аргументов:
функция "AddFirst(PNode, PNode)"
функция "AddFirst(PNode &Head, PNode NewNode)"
типы аргументов: (PNode, PNode) c:\Users\artem\Documents\Visual Studio 2012\Projects\ConsoleAp\ConsoleAp\dfdg.cpp 113

не совсем понимаю что нужно сделать,
если void AddFirst (PNode, PNode) ; меняю на
void AddFirst (PNode*, PNode) ;
то жалуется на вызов функции(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2013, 22:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в односвязном списке (C++):

Ошибка в односвязном списке - C++
Помогите решить эти 2 проблемы C4101: NextNode: неиспользованная локальная переменная (в 118 строке) C4703: используется потенциально...

Ошибка с удалением элемента в односвязном списке - C++
Здравствуйте! Вроде написал функцию удаления элемента в указанной позиции, но почему то не срабатывает. Где ошибка?Или если есть вариант...

Использование деструктора в односвязном списке с++ - C++
Здравствуйте. Нужна срочная помощь!!! Есть реализация односвязного списка в котором узел - класс, а не структура. Вначале программы...

Сортировка вставками в односвязном списке - C++
Собственно нужно реализовать такую сортировку, но что-то не могу я придумать как её реализовать именно в односвязном списке, у нас ведь...

Удаление по ключу в односвязном списке - C++
Написал алгоритм удаления по ключу в линейном, односвязном списке, но он не удаляет, а коверкает записи. Помогите разобраться.. ...

Поиск и удаление в односвязном списке - C++
Помогите с удаление элемента по ключу(номеру этажа). При удалении 2-го элемента в списке, удаляется вместе с 1-ым, но если удалять 3, то 2...

4
Hellrider_
50 / 50 / 2
Регистрация: 12.03.2013
Сообщений: 171
31.03.2013, 23:07 #2
В обьявлении функции тип принимает одно
C++
1
void AddFirst (PNode, PNode) ;
в определении уже другое
C++
1
void AddFirst (PNode &Head, PNode NewNode)
Обявлять нужно так было
C++
1
void AddFirst (PNode&, PNode);
1
artov94
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 9
31.03.2013, 23:14  [ТС] #3
премного благодарен, а если возникнут проблемы по это же программе то лучше создать новую тему? или же тут продолжать корректнее?
0
Hellrider_
50 / 50 / 2
Регистрация: 12.03.2013
Сообщений: 171
31.03.2013, 23:18 #4
Думаю тут можно
0
artov94
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 9
02.04.2013, 01:17  [ТС] #5
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#include<iostream>
#include<clocale>
using namespace std;
#define DEBUG 
 
 
 
class Monom{
protected:
    int Step,Kof;
public:
    Monom() {}
    ~Monom() {}
    void put_Step(int S) { Step=S; }
    void put_Kof(int K) { Kof=K; }
    int get_Step() { return Step; }
    int get_Kof() { return Kof; }
};
 
 
class Node{
    Monom *info;
public:
    Node() {}
    ~Node() {}
    Node *next;
    int count;
 
};
typedef Node *PNode;
PNode Head = NULL,p, where;
class Polinom{
    int rezult;
    int parametr;
public:
    Polinom() {}
    ~Polinom() {}
    void put_rezult() { cin>>rezult; }
    void put_parametr() { cin>>parametr; }
    int get_parametr() { return parametr; }
    int get_rezult() { return rezult; }
};
///////////////////////////////////////////////////////////////
PNode CreateNode (int);
void analizator();
void make_node(Node*);
void AddFirst (PNode&, PNode) ;
void AddLast(PNode&, PNode);
void AddAfter (PNode, PNode);
void AddBefore(PNode&, PNode, PNode);
Monom First;
////////////////////////////////////////////////////////////////
int main()
{  
 
    setlocale(LC_ALL,"Russian");
    //p = CreateNode ();
    //AddLast ( Head, p );
    //cout<<CreateNode()->count<<endl;
    analizator();
    return 0;
}
    
void analizator()
{
    char ar[256]={0},*ptr=ar;
    int i=0,n=0;
    cin.getline(ar,256);
    while (*ptr!='>')
        if(*ptr=='+'){
            *ptr++;
            p=CreateNode (atoi(ptr));
            AddLast ( Head, p );
        }
        p = Head;
while ( p ) { // проход по списку и вывод результатов
cout<<p->count<<endl;
p = p->next;
}
    /*char ar[256]={0},*ptr=ar;
    int i=0,n=0;
    cin.getline(ar,256);
    while (*ptr!=0)
        if (*ptr++=='x')
            n++;
    ptr=ar;
 
    while (*ptr!=0){
        cout<<*ptr;
        ptr++;
    }
    ptr=ar;
    First.put_Kof(atoi(ptr));
 
    do ptr++;
    while (*ptr!='^');
    ptr++;
    First.put_Step(atoi(ptr));
    cout<<endl<<First.get_Kof();
    cout<<endl<<First.get_Step();
    cout<<endl<<n<<endl;*/
    return;
}
 
//void make_node(Node *ptr=NULL)
//{
//    Monom *m;
//  Node *p;
//  m=new Monom;
//  p=new Node;
//  *ptr->next = p;
//
//  return;
//}
PNode CreateNode (int n) 
{ 
    PNode NewNode = new Node; 
    NewNode->count = n; 
    cout<<NewNode->count<<endl;
    NewNode->next = NULL;
    return NewNode; 
}
 
void AddLast(PNode &Head, PNode NewNode) 
{ 
    PNode q = Head; 
    if (Head == NULL) { 
        AddFirst(Head, NewNode);
        return; 
    } 
    while (q->next) q = q->next; 
    AddAfter(q, NewNode); 
}
 
 
void AddFirst (PNode &Head, PNode NewNode) 
{ 
    NewNode->next = Head; 
    Head = NewNode; 
}
 
void AddAfter (PNode p, PNode NewNode) 
{ 
    NewNode->next = p->next; 
    p->next = NewNode; 
}
 
void AddBefore(PNode &Head, PNode p, PNode NewNode)
{
PNode q = Head;
if (Head == p) {
AddFirst(Head, NewNode); 
return;
}
while (q && q->next!=p) 
q = q->next;
if ( q ) 
AddAfter(q, NewNode); 
}
void AddAfter (PNode p, PNode NewNode) 
{ 
    NewNode->next = p->next; 
    p->next = NewNode; 
}
 
void AddBefore(PNode &Head, PNode p, PNode NewNode)
{
PNode q = Head;
if (Head == p) {
AddFirst(Head, NewNode); // вставка перед первым узлом
return;
}
while (q && q->next!=p) // ищем узел, за которым следует p
q = q->next;
if ( q ) // если нашли такой узел,
AddAfter(q, NewNode); // добавить новый после него
}
не хочет проходить 133 строку, пример входной строки +237+32+233332+238 (всё упрощено=) )

Добавлено через 2 часа 17 минут
блин...вот полдня не работало, написал сюда и заработало..извиняюсь

Добавлено через 4 часа 29 минут
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include<iostream>
#include<clocale>
#include<cctype>
using namespace std;
#define DEBUG 
 
 
 
class Monom{
protected:
    int Step,Kof;
public:
    Monom() {}
    ~Monom() {}
    void put_Step(int S) { Step=S; }
    void put_Kof(int K) { Kof=K; }
    int get_Step() { return Step; }
    int get_Kof() { return Kof; }
};
 
 
class Node:public Monom{
    Monom *info;
public:
    Node() {}
    ~Node() {}
    Node *next;
    int count;
 
};
typedef Node *PNode;
PNode Head = NULL,p, where;
class Polinom{
    int rezult;
    int parametr;
public:
    Polinom() {}
    ~Polinom() {}
    void put_rezult() { cin>>rezult; }
    void put_parametr() { cin>>parametr; }
    int get_parametr() { return parametr; }
    int get_rezult() { return rezult; }
};
///////////////////////////////////////////////////////////////
PNode CreateNode (int);
void analizator();
void make_node(Node*);
void AddFirst (PNode&, PNode) ;
void AddLast(PNode&, PNode);
void AddAfter (PNode, PNode);
void AddBefore(PNode&, PNode, PNode);
Monom First;
////////////////////////////////////////////////////////////////
int main()
{  
 
    setlocale(LC_ALL,"Russian");
    //p = CreateNode ();
    //AddLast ( Head, p );
    //cout<<CreateNode()->count<<endl;
    analizator();
    return 0;
}
    
void analizator()
{
    char ar[256]={0},*ptr=ar;
    int i=0,n=0;
    cin.getline(ar,256);
    while (*ptr!=0){
        if(*ptr=='*'||*ptr=='>'){
            do{
                ptr--;
            }while(isdigit(*ptr));
            ptr++;
            p=CreateNode (atoi(ptr));
            AddLast ( Head, p );
            while(*ptr!='^'){
            ptr++;
            }
            ptr++;
            p->put_Step(atoi(ptr));
        }
        ptr++;
    }
        p = Head;
while ( p ) { 
cout<<'<'<<p->get_Kof()<<" -кофициэнты"<<endl;
cout<<'<'<<p->get_Step()<<" -степени"<<endl;
p = p->next;
}
    return;
}
 
PNode CreateNode (int n) 
{ 
    PNode NewNode = new Node; 
    NewNode->put_Kof(n);
    NewNode->next = NULL;
    return NewNode; 
}
 
void AddLast(PNode &Head, PNode NewNode) 
{ 
    PNode q = Head; 
    if (Head == NULL) { 
        AddFirst(Head, NewNode);
        return; 
    } 
    while (q->next) q = q->next; 
    AddAfter(q, NewNode); 
}
 
 
void AddFirst (PNode &Head, PNode NewNode) 
{ 
    NewNode->next = Head; 
    Head = NewNode; 
}
 
void AddAfter (PNode p, PNode NewNode) 
{ 
    NewNode->next = p->next; 
    p->next = NewNode; 
}
 
void AddBefore(PNode &Head, PNode p, PNode NewNode)
{
PNode q = Head;
if (Head == p) {
AddFirst(Head, NewNode); 
return;
}
while (q && q->next!=p) 
q = q->next;
if ( q ) 
AddAfter(q, NewNode); 
}
сейчас обрабатывает строку типа 543*x^34+22*x^423 нужна обработка <5*x^-2-42*x^4+456-5*x> подскажите алгоритм обработки( знаки ^ и * обязательны, если не задана степень, она равно 1.. и прочие похожие условности
0
02.04.2013, 01:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2013, 01:17
Привет! Вот еще темы с ответами:

Удаление узлов в односвязном списке - C++
Помогите пожалуйста, не могу понять что не так. Нужно удалить узлы содержащие простые числа.Программа не удаляет! #include&lt;iostream&gt; ...

Удаление повторяющихся элементов в односвязном списке - C++
Добрый день! Задание такое: построить линейный список из нескольких динамических переменных, содержащих вводимые целые числа....

Добавление узла перед заданным в односвязном списке - C++
Вот такой код я нашел, но он похоже с ошибками, нету * как минимум. проставил их но тоже не помогло void AddBefore(PNode PHead, PNode p,...

Удалить все вхождения элемента в односвязном списке - C++
Нужна функция для удаления всех вхождений элемента в односвязном списке


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

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

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