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

Разработать класс с набором функций для управления односвязным списком - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Часы C++ http://www.cyberforum.ru/cpp-beginners/thread692994.html
Здравствуйте. Вот программа, реализующая работу часов. Подскажите пожалуйста, что нужно добавить, чтобы был выбор часового пояса. Заранее спасибо. #include <graphics.h> // заголовочный файл графического режима Borland Graphics Interface #include <cmath> // заголовочный файл для простых математических операций #include <ctime> // заголовочный файл для простых математических операций #include...
C++ перегрузка операторов Есть перечисление и функция : enum Num { on, tw, th, fo ,fi, si ,se, ei, ni ,last }; Num wl(on); Num operator++(Num& obj) { obj = (obj==last) ? on : Num(obj+1); // Что значит Num(obj+1); ??? Почему нельзя написать http://www.cyberforum.ru/cpp-beginners/thread692987.html
C++ Вывод в поток и операция инкремента / декремента
При использовании следующего оператора вывода в поток: int n = 10; cout << n++ << ' ' << n << ' ' << --n << endl; получил такой странный вывод: 9 10 10 Я знаю, что в принцыпе это undefined behavior и зависит от реализации компилятора, но все же... Результат схож с вычислением этих переменных при передаче в функция в VS, где вычисление выражений реализовано с права на лево, но ведь вывод в...
Удаление эллементов с массива C++
У меня к примеру есть массив 1 2 3 4 5 6 И нужно с него удалить все четные и освободить память занятую ненужными элементами. Я делаю сортировку ,и по одному откидываю все четные в конец массива и освобождаю память которую они заняли. 1 3 5 2 4 6 Но такой метод забирает слишком много времени при большом количестве чисел в массиве. Сказали что убрать элемент из массива можно намного...
C++ 2-х массив сортировка http://www.cyberforum.ru/cpp-beginners/thread692897.html
Привет всем. люди добрые подскажите пж по такому условию есть массив: 1 3 4 9 7 6 1 6 1 мах в этом массиве мах1=4, мах2=9, мах3=6 по строчкам как можно сделать так чтобы максимальная строчка была первой и так по убыванию вниз
C++ Двухмерный динамический массив Мне нужно создать 4 многомерных динамических массивов, размерность которых 10000000 10000000, и у меня не получалось их создавать на столько большими, непосредственно в коде создавал все 4, потому что в среде Borland developer studio 2005 выдавало ошибку что то на подобии переполнения стека, тогда мне посоветовали их создать с помощью процедуры все сразу и использовать её при создании... подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11820 / 6799 / 769
Регистрация: 27.09.2012
Сообщений: 16,875
Записей в блоге: 2
Завершенные тесты: 1
09.11.2012, 16:12     Разработать класс с набором функций для управления односвязным списком
Цитата Сообщение от max33x Посмотреть сообщение
Обращаюсь к вам с просьбой, с чего начать мне выполнение данного задания, какие элементы использовать
Для начала нужно сформулировать для себя, что же такое связанный список. Если Вы не понимаете что это такое, то сначала почитайте на эту тему литературу.

Потом нарисуйте себе на листе бумаге структуру будущего списка и стройте свой класс согласно заранее определенной структуре.

Цитата Сообщение от max33x Посмотреть сообщение
Или хотя бы небольшой пример создания такого класса.
Не знаю, пойдет или нет, тут стэк на основе связанного списка.
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
#include <iostream>
#include "state.h"
using std::cout;
using std::cin;
using std::endl;
 
 
void Function1(int d){
cout<<"\tВызвана функция Function1 с параметром d = "<<d<<endl;
}
void Function2(int d){
cout<<"\tВызвана функция Function2 с параметром d = "<<d<<endl;
}
void Function3(int d){
cout<<"\tВызвана функция Function3 с параметром d = "<<d<<endl;
}
 
int main(){
StatesManager SM;
setlocale(LC_ALL,"Rus");
int q,nf;
void (*pF)(int);
do{
system("cls");
cout<<"Колличество состояний в стеке: "<<SM.GetCount()<<endl;
cout<<"Вызов текущей функции: "<<endl;
SM.ExecuteHead();
cout<<"Выберите действие (EXIT - 0; PUSH - 1; POP 2): ";
cin>>q;
cout<<endl;
 
if (q==1){
cout<<"Выберите функцию (1,2,3): ";
cin>>nf;
cout<<endl;
pF=0;
switch (nf){
case 1:
pF=Function1;
break;
case 2:
pF=Function2;
break;
default:
pF=Function3; break;
}
}
switch(q){
case 1:
SM.StatePush(pF);
break;
case 2:
SM.StatePop();
break;
default:
q=0; break;
}
}while(q);
 
return 0;
}
 
//////////////////////////////////////////////////////////////////////////
//////////////////////////////state.h////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
#ifndef _STACK_H_
#define _STACK_H_
 
class StatesManager{
private:
typedef struct STATE{
void (*Func)(int);
STATE *pNext;
} STATE;
STATE * pStates;
int nCount;
public:
int GetCount();
StatesManager();
~StatesManager();
bool StatePush(void (*Func)(int));
bool StatePop();
void ExecuteHead();
};
 
#endif//_STACK_H_
 
 
 
//////////////////////////////////////////////////////////////////////////
////////////////////////////state.cpp///////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#include "state.h"
 
StatesManager::StatesManager(){
this->nCount=0;
this->pStates=0;
}
 
StatesManager::~StatesManager(){
STATE *pS;
while(pStates){
pS=pStates;
pStates=pStates->pNext;
delete pS;
}
}
 
int StatesManager::GetCount(){return this->nCount;}
 
bool StatesManager::StatePush(void (*Function)(int)){
if (Function==0)
return false;
STATE *pNS=new STATE;
pNS->Func=Function;
pNS->pNext=this->pStates;
this->pStates=pNS;
this->nCount++;
return true;
}
bool StatesManager::StatePop(){
if (!pStates)
return false;
STATE *pTS;
pTS=this->pStates;
this->pStates=this->pStates->pNext;
delete pTS;
this->nCount--;
if (!pStates)
return false;
return true;
}
void StatesManager::ExecuteHead(){
if(pStates){
pStates->Func(this->nCount);
}
}
 
Текущее время: 18:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru