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

C++ Наследование динамического списка классом стеком. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Литература по структурам данных и алгоритмам http://www.cyberforum.ru/cpp-beginners/thread359673.html
Доброго Времени Суток! Хочу спросить совета, по поводу обширной книги по структурам данных и алгоритмам на C++. Отыскал следующие книги: 1. Организация структур данных и решение задач на С++, Уайс М. А. 2. Структуры и алгоритмы обработки данных: объектно-ориентированный подход и реализация на С++, А. А. Кубенский 3. Структуры и алгоритмы обработки данных. Примеры на языке Си, Б. С....
C++ Перестановка строки. #include <iostream> using namespace std; void change(char &a, char &b); void permutation(char* Str) { if(strlen(Str)%2 == 0) http://www.cyberforum.ru/cpp-beginners/thread359665.html
Объясните код программы C++
Вот рабочий код) напротив каждой строки через 2 слеша обьясните что происходит в программе, желательно поподробнее) спасибо) #include <stdafx.h> #include <iostream> #include <algorithm> #include <string> #include <vector> using namespace std; class Csv { // read and parse comma-separated values
Написать функцию is_equal() - поэлементное сравнение двух контейнера C++
C++ Реализуйте следующую функцию: bool is_equa1( const int*ia, int ia_size,const vector<int> &ivec ); Функция is_equal() сравнивает поэлементно два контейнера. В случае разного размера контейнеров “хвост” более длинного в расчет не принимается. Понятно, что, если все сравниваемые элементы равны, функция возвращает true, если отличается хотя бы один – false. Используйте итератор для перебора...
C++ Покритикуйте код http://www.cyberforum.ru/cpp-beginners/thread359638.html
Есть класс Студенты (реализован через односвязный список), хотел бы услышать критику по поводу его улучшения, если кому не лень разбираться в столь поздний час :) Сам код естественно полностью рабочий и предупреждений тоже компилятор не выдаёт (если не считать в main в условии while, но там всё ок) так что хотелось бы услышать Ваши замечания если что можно сделать лучше. Students.h #ifndef...
C++ правильно записать выражения арифметические суть задания по фортрану и си записать выражения и посчитать их..я записала но результаты выходят разные.. помогите пожалуйста записать правильно задание моя запись на фортран Код: подробнее

Показать сообщение отдельно
iWord
10 / 10 / 1
Регистрация: 21.12.2010
Сообщений: 109

C++ Наследование динамического списка классом стеком. - C++

03.10.2011, 05:44. Просмотров 1873. Ответов 12
Метки (Все метки)

Салют форумчане. Новый курс, новые приключения. Вот и дали задание наследую динамический список создать стек. Список вроде сделал , да стек не пойму как к нему прикрутить. (Какие только велосипеды не придумают для лабораторных работ)

List.h
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
#ifndef LIST_H
#define LIST_H
#include <iostream>
using std::cout;
#include <new>
#include "ListNode.h" 
template< typename NODETYPE >
class List 
{
public:
   List(); 
   ~List(); 
   void insertAtFront( const NODETYPE & );
   int insertAtBack( const NODETYPE & );
   bool removeFromFront( NODETYPE & );
   bool removeFromBack( NODETYPE & );
   bool isEmpty() const;
   void print() const;
private:
   ListNode< NODETYPE > *firstPtr;
   ListNode< NODETYPE > *lastPtr; 
   ListNode< NODETYPE > *getNewNode( const NODETYPE & );
}; 
 
template< typename NODETYPE >
List< NODETYPE >::List() 
   : firstPtr( 0 ), lastPtr( 0 ) 
{ 
    cout << "Конструктор инциализации начал работу";
    cout << "Все начальные данные инициализированы";
}
 
template< typename NODETYPE >
List< NODETYPE >::~List()
{
   if ( !isEmpty() ) 
   {    
      cout << "Удаление элементов\n";
      ListNode< NODETYPE > *currentPtr = firstPtr;
      ListNode< NODETYPE > *tempPtr;
      while ( currentPtr != 0 ) 
      {  
         tempPtr = currentPtr;
         cout << tempPtr->data << '\n';
         currentPtr = currentPtr->nextPtr;
         delete tempPtr;
      } 
   } 
   cout << "Все элементы удалены\n\n";
} 
 
template< typename NODETYPE >
void List< NODETYPE >::insertAtFront( const NODETYPE &value )
{
   ListNode< NODETYPE > *newPtr = getNewNode( value );
   if ( isEmpty() ) 
      firstPtr = lastPtr = newPtr; 
   else 
   {
      newPtr->nextPtr = firstPtr; 
      firstPtr = newPtr; 
   } 
} 
 
template< typename NODETYPE >
int List< NODETYPE >::insertAtBack( const NODETYPE &value )
{
   ListNode< NODETYPE > *newPtr = getNewNode( value );
   if ( isEmpty() ) 
      firstPtr = lastPtr = newPtr;
   else 
   {
      lastPtr->nextPtr = newPtr; 
      lastPtr = newPtr;
   }
} 
 
template< typename NODETYPE >
bool List< NODETYPE >::removeFromFront( NODETYPE &value )
{
   if ( isEmpty() ) 
      return false;
   else 
   {
      ListNode< NODETYPE > *tempPtr = firstPtr; 
      if ( firstPtr == lastPtr )
         firstPtr = lastPtr = 0;
      else
         firstPtr = firstPtr->nextPtr; 
      value = tempPtr->data; 
      delete tempPtr; 
      return true; 
   } 
} 
 
template< typename NODETYPE >
bool List< NODETYPE >::removeFromBack( NODETYPE &value )
{
   if ( isEmpty() ) 
      return false;
   else 
   {
      ListNode< NODETYPE > *tempPtr = lastPtr; 
      if ( firstPtr == lastPtr )
         firstPtr = lastPtr = 0; 
      else 
      {
         ListNode< NODETYPE > *currentPtr = firstPtr;
          
         while ( currentPtr->nextPtr != lastPtr )    
            currentPtr = currentPtr->nextPtr;
         lastPtr = currentPtr;
         currentPtr->nextPtr = 0; 
      } 
      value = tempPtr->data; 
      delete tempPtr;
      return true; 
   } 
} 
template< typename NODETYPE > 
bool List< NODETYPE >::isEmpty() const 
{ 
   return firstPtr == 0; 
} 
 
template< typename NODETYPE >
ListNode< NODETYPE > *List< NODETYPE >::getNewNode( 
   const NODETYPE &value )
{
   return new ListNode< NODETYPE >( value );
}
 
template< typename NODETYPE >
void List< NODETYPE >::print() const
{
   if ( isEmpty() ) 
   {
      cout << "Список пуст\n\n";
      return;
   } 
   ListNode< NODETYPE > *currentPtr = firstPtr;
 
   while ( currentPtr != 0 ) 
   {
      cout << currentPtr->data << ' ';
      currentPtr = currentPtr->nextPtr;
   }
   cout << "\n\n";
} 
#endif
ListNode.h
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
#ifndef LISTNODE_H
#define LISTNODE_H
template< typename NODETYPE > class List;                            
template< typename NODETYPE >
class ListNode 
{
   friend class List< NODETYPE >; 
public:
   ListNode( const NODETYPE & );
   NODETYPE getData() const; 
private:
   NODETYPE data; 
   ListNode< NODETYPE > *nextPtr; 
}; 
 
template< typename NODETYPE >
ListNode< NODETYPE >::ListNode( const NODETYPE &info )
   : data( info ), nextPtr( 0 ) 
{ 
 
} 
 
template< typename NODETYPE >
NODETYPE ListNode< NODETYPE >::getData() const 
{ 
   return data; 
}
#endif
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru