Форум программистов, компьютерный форум 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-ное количество миллисекунд вызывать одну функцию. Я реализовал это с помощью цикла while, используя time() из библиотеки <time.h>. Но time() возвращает кол-во секунд. Функция вызывается раз в секунду, а мне надо чтоб чаще. Вроде так. подробнее

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

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

20.10.2008, 19:43. Просмотров 1948. Ответов 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;
};

помогите, пожалуйста. Или как хотя бы примерно делать.....
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru