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

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

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

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

20.10.2008, 19:43. Просмотров 1954. Ответов 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++
#include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; struct pol { char gop; char hop; int iop; ...

Стуктуры/классы - C++
Вопрос, вот люди пишут : //1) struct Human { public: int weight; }; //и //2) class Human

Сортировка данных стуктуры - C++
Здравствуйте, пытался сортировать данные стуктуры, но ничего не выходило, либо выводятся нули, либо вообще ничего. #include &lt;stdio.h&gt;...

Отсортировать стуктуры по автору а внутри каждого автора- по году издания - C++
надо отсортировать по автору а внутри каждого автора- по году издания. у меня почему-то иероглифы выводит. я вообщем проверяю...

Используя стек, описать функцию проверяющую, является ли стек пустым - C++
Используя стек, описать функцию проверяющую, является ли стек пустым

Программа добавляет введенный массив 5*5 в стек и выводит полученный стек двумя столбцами - C++
Программа добавляет введенный массив 5*5 в стек и выводит полученный стек двумя столбцами #include &lt;iostream&gt; #include &lt;stdlib.h&gt; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2008, 19:43
Привет! Вот еще темы с ответами:

Переменные в стеке. Где хранятся? Как обрабатываются? Есть ли программный стек или только стек процессора? - C++
Есть у меня пробелы в познаниях, хотел бы их устранить. 1. Что такое стек в самом языке С++ ? 2. В какой памяти он хранится и почему...

при работе рекурсивной функции заканчивается стек и программа соответственно; как сделать так, чтобы она писала "стек закончился"? - C++
Сабж g++ 4.5.0

Структура стек (: добавить элемент в стек, удалить элемент из стека, получить значение с вершины стека, размер стека...) - C++
Всем привет,ребят помогите пожалуйста с лабой,вообще без понятия про стеки:( Может кто то делал,или встречался с таким заданием: ...

Вложенные исключения - C++
Добрый день ! Есть к примеру такая конструкция try { try { } catch(int x)


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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