Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2011, 21:03   #1
Lucefer2007
 
Регистрация: 05.03.2011
Сообщений: 6
По умолчанию Cтеки

Для организации стека и дека использовать структуру с функциями (методами работы). Реализовать все операции со стеком и деком через функции. В проекте объявления, определение функций и реализацию алгоритма выполнять в отдельных модулях.
Написать программу , которая по одному стеку строит два новых: Stack1 из положительных элементов и Stack2.
Вот мой код:
Код:
#include <stack>
#define STACK_ESE    -1 

 
	struct Node
	{
	int    key;
	Node* prev;
	};
struct Stack                      
{
	Node*  Top;
	  
	int Push(int);         
	int  Pop();  
	bool isEmpty(); 
};
Stack CreateStack();
Код:
#include "stdafx.h"
#include "stack.h"

bool Stack::isEmpty()
{
	return ((*Top).prev==NULL);
}

int Stack::Pop()
{
	int vp=STACK_ESE;
	if (!isEmpty()) 
	{
		vp=(*Top).key;
		Node* pr=(*Top).prev;
		delete Top;
		Top=pr;
	}
	return vp;
}
int Stack::Push(int x)
{
	Node *nd = new Node;
	nd->key=x;
	nd->prev=Top;
	Top=nd;

	return x;
}
Stack CreateStack()
{
	Stack *st=new Stack;
	st->Top=NULL;
	st->Push(STACK_ESE);
	return *st;
}
Код:
#include "stdafx.h"
#include "stack.h"
#include <cstdlib>
#include <stack>
#include <ctime>
#include <conio.h>
#include <iostream>

using namespace std;
void main()
{
	Stack st1=CreateStack(),st2=CreateStack(),st3=CreateStack();
	int n,q;

	cout<<"vvedite razmer stecka"<<endl;
	cin>>n;
    cout<<"vvedite elementi"<<endl;
	for (int i=0; i<n; i++) 
	{
		cin>>q; st1.Push(q);
		

		if(q>=0) st2.Push(q);
		else st3.Push(q);
	} 
	 cout << "stack1 "<<endl;
  while(!st1.isEmpty()){
	  cout << st1.Top<< ' ';
    st1.Pop();
  }
cout<<endl;
   cout << "stack2 "<<endl;
  while(!st2.isEmpty()){
   cout << st2.Top << ' ';
    st2.Pop();
  }
cout<<endl;
  cout<<"stack3"<<endl;
  while(!st3.isEmpty())
  {
	  cout<<st3.Top<< ' ';
	  st3.Pop();
  }
cout<<endl;

  getch();
}
При выводе стеков, мне выводит адреса элементов, а не сами элементы. Просьба помочь. Завтра сдавать(
Lucefer2007 вне форума Ответить с цитированием
Старый 05.03.2011, 21:14   #2
Д_М
Пользователь
 
Регистрация: 02.02.2011
Сообщений: 92
По умолчанию

cout << st1.Top->key наверное
Д_М вне форума Ответить с цитированием
Старый 05.03.2011, 21:21   #3
Lucefer2007
 
Регистрация: 05.03.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Д_М Посмотреть сообщение
cout << st1.Top->key наверное
ДАДАДАДАДАДДАДАД! СПАСИБО! Чувак, я люблю тебя)))))
Lucefer2007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц