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

Вложенные структуры, стек - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ модули http://www.cyberforum.ru/cpp-beginners/thread14342.html
подскажите как создавать и подключать собственные модули? а лучше где это можно найти?
C++ максимум в массиве Народ, помогите! Как найти максимум в массиве с помощью циклов и условного оператора? http://www.cyberforum.ru/cpp-beginners/thread14304.html
C++ Указатели ((((((((((
Проблема решена. Удалите топик пожалуйста.
Определить максимум среди сумм элементов диагоналей матрицы C++
Дана целочисленная квадратная матрица. Определить максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы. Скока не парился, не получается, подскажите как правильно.
C++ Задачи на циклы... подскажите http://www.cyberforum.ru/cpp-beginners/thread14272.html
1.Дана последовательность из n целых чисел. Найти количество элементов этой последовательности, кратных числу К. 2.Дана последовательность целых чисел, за которой следует 0. Найти сумму нечетных...
C++ Как получить миллисекунды? Всё равно, кол-во миллисекунд в этом дне, или с 1970. Главное - как получить миллисекунды? Добавлено: Нет, я не так объяснил. Дело в том, что мне нужно раз в n-ное количество миллисекунд вызывать... подробнее

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

Вложенные структуры, стек - C++

20.10.2008, 19:43. Просмотров 1969. Ответов 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
//Stack.h
//вложенная структура в связанном списке;
 
#ifndef STACK_H
#define STACK_H
 
struct Stack
{
    struct Link
    {
        void* data; //указатель на данные, хранящиеся в Link;
        Link* next; //указатель на следующую структуру Link;
        //если указатель next =0, то это значит конец списка;
        void initialize(void* dat, Link* nxt);
    }* head;
    void initialize();
    void push(void* dat);
    void* peek();//возвращает указатель на верхний блок данных, но осталяет верхний элемент без изменений;
    void* pop();//возвращает указатель на верхний блок данных и удаляет верхний элемент из стека;
    void cleanup();
};
 
 
#endif // STACK_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
//Stack.cpp
//связанный список с вложением
#include "stdafx.h"
#include "Stack.h"
#include "require.h"
#include <iostream>
using namespace std;
 
void 
Stack::Link::initialize(void* dat, Link* nxt) {
  data = dat;
  next = nxt;
}
 
void Stack::initialize() { head = 0; }
 
void Stack::push(void* dat) 
{
  Link* newLink = new Link;
  newLink->initialize(dat, head);
  head = newLink;
}
 
void* Stack::peek() { 
  require(head != 0, "Stack empty");
  return head->data; 
}
 
void* Stack::pop() {
  if(head == 0) return 0;
  void* result = head->data;
  Link* oldHead = head;
  head = head->next;
  delete oldHead;
  return result;
}
 
void Stack::cleanup() {
  require(head == 0, "Stack not empty");
} ///:~

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
// StackTest.cpp
// тестирование связанного списка с вложенной структурой
 
#include "stdafx.h"
#include "require.h"
#include "Stack.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
void main() 
{
 
  Stack massiv;
  massiv.initialize();
 int chislo;
  // Чтение файла и сохранение строк в стеке:
  for (int i=0; i<5; i++)
  {
      cout << "enter chislo " << endl;
      cin >> chislo;
      massiv.push(new int(chislo));
  }
    
  // Извлечение строк из стека и вывод:
  int* s;
  while((s = (int*)massiv.pop()) != 0) {
    cout << *s << endl;
    delete s; 
  }
  massiv.cleanup();
} ///:~


он работает. как его реализовать, чтобы можно было вкладывать в стек структуру?... например:
C++
1
2
3
4
5
struct Video
{
  int number; 
  int year;
};
помогите, пожалуйста. Или как хотя бы примерно делать.....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru