Срочно помогите до 5 часов должен сделать)) от этого зависит моя карьера))

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
mdems
Сообщения: 20
Зарегистрирован: 14 авг 2009, 22:48

Парни помогите нужно написать простой STACK вот
не используя структур языка С++, чисто на C надо написать
что бы я умел
положить в стек
извлечь из стека
удалить элемент из стека
проверить не равен ли 0 стек
и проверить на переполнение стека воот парни
выручайте
чето начал писать ниче не получаеться

Код: Выделить всё

#include <stdio.h>
#include <iostream>
using namespace std;

int TOP_MAX = 100;

int STACK[100];
int k;

int push(int x)
{
	if(!(k >= TOP_MAX))
	{
	 for(int i = 0;i < STACK[k];i++)
			STACK[k] = STACK[i];
	}
	else 
	{
		cout << "RESULT FAIL" << endl;
	}
	return x;
}
void main()
{

}
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
поожалуйста
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

Создай указатель на вершину стека и "двигай" его по массиву, тогда и копировать массив не прийдётся.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Во-первых, ты просишь написать на чистом С, а сам С++ хедеры включаешь. Зачем?
Во-вторых, как-то не логично у тебя всё. Я бы ожидал увидеть что-то типа:

Код: Выделить всё

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int TOP_MAX = 100;

int STACK[100];
int k = 0;

void push(int x)
{
   if (TOP_MAX == k)
   {
      printf("Stack overflow\n");
      abort();
   }
   else
   {
      STACK[k++] = x;
   }
}

int pop()
{
   if (k)
   {
      return STACK[--k];
   }
   else
   {
      printf("Pop cannot be called - stack is empty\n");
      abort();
   }
   return 0;
}

void main()
{
   push(10);
   push(20);
   push(30);

   printf("%d\n", pop());
   printf("%d\n", pop());
   printf("%d\n", pop());

   getch();
}
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
mdems
Сообщения: 20
Зарегистрирован: 14 авг 2009, 22:48

Ромео ты крут)) спасибо)
Ответить