0 / 0 / 0
Регистрация: 09.02.2013
Сообщений: 42
|
|
1
|
что тут не правильно?
03.06.2013, 21:25. Показов 520. Ответов 0
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
| #include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <conio.h>
using namespace std;
class Stack
{
private:
int foo;
public:
int x;
Stack *Next,*Head; //Голова стека и указатель на следующий элемент
void Add(int x, Stack **In_data) //Принимаем элемент и указатель на указатель на стек
{
Stack *temp=new Stack; //Выделяем память для нового элемента
//temp->x=rand ()%101-50; //Записываем в поле x принимаемый в функцию элемент x
temp->x=x;
temp->Next=(*In_data)->Head; //Указываем, что следующий элемент это предыдущий
(*In_data)->Head=temp; //Сдвигаем голову на позицию вперед
};
void ClearStack(Stack *In_data)
{
while (In_data->Head!=NULL) //Пока по адресу не пусто
{
Stack *temp=In_data->Head->Next; //Временная переменная для хранения адреса следующего элемента
delete In_data->Head; //Освобождаем адрес обозначающий начало
In_data->Head=temp; //Меняем адрес на следующий
};
}
};
void Chan(Stack *In_data, Stack *Out_data) //Нужен только сам стек
{
//int min=51, max=-51, k=0;
Stack *temp=new Stack; //Выделяем память под временный элемент
temp=In_data->Head; //Указываем ему, что его позиция в голове стека
//с помощью цикла проходим по всему стеку
while (temp!=NULL) //выходим при встрече с пустым полем
{
if (temp->x>=0)
{
Out_data->Add(temp->x,&Out_data);
}
temp=temp->Next; //Переходим к следующему элементу
}
}
int main()
{
Stack *In_data=new Stack; //Выделяем память для стека
In_data->Head=NULL; //Во избежание ошибок инициализируем первый элемент
Stack *Out_data=new Stack; //Выделяем память для стека
Out_data->Head=NULL; //Во избежание ошибок инициализируем первый элемент
int x=0;
int count=0;
cout«"count=";
cin» count;
cout«endl;
cout«"Stek:"«endl;
for (int i=0;i<count;i++){
cin » x;
In_data->Add(x,&In_data); //Заносим данные в стек
}
/*In_data->*/Chan(In_data,Out_data);
cout«"Out stack"«endl;
Stack *temp=new Stack; //Выделяем память под временный элемент
temp=Out_data->Head; //Указываем ему, что его позиция в голове стека
while (temp!=NULL) //выходим при встрече с пустым полем
{
cout«temp->x«" ";
temp=temp->Next; //Переходим к следующему элементу
}//Выводим стек на экран
void ClearStack(Stack *In_data); //Очищаем память.
void ClearStack(Stack *Out_data);
_getch();
return 0;
} |
|
0
|