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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
Skaffi
1 / 1 / 0
Регистрация: 13.10.2008
Сообщений: 10
#1

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

20.10.2008, 19:43. Просмотров 1946. Ответов 0
Метки нет (Все метки)

помогите, пожалуйста.

Есть стек.

Код
//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

Код
//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");
} ///:~

Код
// 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();
} ///:~


он работает. как его реализовать, чтобы можно было вкладывать в стек структуру?... например:
struct Video
{
int number;
int year;
};

помогите, пожалуйста. Или как хотя бы примерно делать.....
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2008, 19:43     Вложенные стуктуры, стек
Посмотрите здесь:

Сортировка данных стуктуры C++
C++ Отсортировать стуктуры по автору а внутри каждого автора- по году издания
C++ Вложенные классы!!
C++ Стуктуры/классы
C++ Размер стуктуры
Вложенные циклы С++ C++
Вложенные операторы С++ C++
Вложенные циклы C++
C++ Вложенные объекты
Вложенные структуры C++
Вложенные условия ( if-else ) C++
C++ Вложенные макросы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 21:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru