AKB Forums

Go Back   AKB Forums > Technical sections > Algorithms
Home Register Blogs FAQ Members List Calendar Downloads Arcade Mark Forums Read

Algorithms The source of algorithms for your project

Troubles when posting message? Click here! :: Проблемы с отправлением сообщения? Нажмите сюда!

Reply
 
LinkBack Thread Tools Display Modes
Old Mar 30, 2003, 20:09  
Banned
 
DaNYer's Avatar
 
Join Date: Oct 2002
Location: Brooklyn, New York
Posts: 3,760
Rep Power: 0
Reputation: 10
Question [PLEASE HELP ASAP] Stacks

Pojaluista pomogite naiti problemmu, u menya uje ruki opuskaiutsya.....
esli est' dva stacka, mi delaem sleduiushee:

push(s1, 2);
push(s1, 3);
push(s2, 4);
push(s2, 5);

to po idee esli sdelat' posle etogo vot tak:

test1=pop(s1); //doljno bit' 3
test2=pop(s2); //doljno bit' 5

printf("TEST1 = %d\n", test1);
printf("TEST2 = %d\n", test2);

to na ekran doljno viprintat'sya sleduyuhsee:

TEST1 = 3
TEST2 = 5

a vmesto etogo u menya poluchaetsya
TEST1 = 5
TEST2 = 4

kak mne etu dolbannomu algoritmu obyasnit' chto u menya DVA stacka a ne ODIN?????????

privoju svoi kod:

Code:
//header file

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

#define STACKSIZE   100
#define BOTTOM     -1
#define TRUE        1
#define FALSE       0


struct stack
{
	int top;
	int elements[STACKSIZE];
};

typedef struct stack STACK;


a vot i main

Code:
#include "stacks.h"

// basic operation function prototypes
void	init(STACK *);
int		empty(STACK *);
int		pop(STACK *);
void	push(STACK *, int);



void main ()
{
	int test1, test2;
	STACK *s1;
	STACK *s2;
	init(s1);
	init(s2);



	push(s1, 2);
	push(s1, 3);
	push(s2, 4);
	push(s2, 5);

	test1=pop(s1);	//doljno bit' 3
	test2=pop(s2);	//doljno bit' 5

	printf("TEST1 = %d\n", test1);	
	printf("TEST2 = %d\n", test2);

}



//** stack basic operation functions go here:
//** initstack
void init(STACK *s)
{
	s->top = BOTTOM;
}


//empty **************
int empty(STACK *s)
{
	if(s->top == BOTTOM)
		return (TRUE);
	else
		return (FALSE);
}




//******* pop
int pop(STACK *s)
{
	if(empty(s))
	{
		printf("%s","stack underflow");
		exit(1);
	}
	return(s->elements[s->top--]);
}


//******* push
void push(STACK *s, int x)
{
	if(s->top == STACKSIZE-1)
	{
		printf("%s","stack overflow");
		exit(1);
	}
	else
	{
		s->elements[++(s->top)] = x;
		return;
	}
}

Last edited by DaNYer : Mar 30, 2003 at 22:20.
DaNYer is offline   Reply With Quote Quote selected
Old Apr 2, 2003, 15:45   #16
Banned
 
DaNYer's Avatar
 
Join Date: Oct 2002
Location: Brooklyn, New York
Posts: 3,760
Rep Power: 0
Reputation: 10
Nemra

Agregat, krasivoe reshenie mne ponravilos', no k sojaleniu proga (v principe eto skelet odnoi iz funkcii dlya odnogo projecta....) DOLJNA bit' na C a ne C++ i ya uje razreshil etu problemmu... s vashei pomoshyu razumeetsya

spasibo
DaNYer is offline   Reply With Quote Quote selected
Old Apr 2, 2003, 15:51   #17
Грустно...
 
Agregat's Avatar
 
Join Date: Aug 2002
Location: Там, где всегда идут дожди
Posts: 21,451
Rep Power: 10
Reputation: 144
Send a message via ICQ to Agregat Send a message via MSN to Agregat

2 два решения привел, не знаю какое...
второе почти такое же, как и у уважаемого товарища Немра.
__________________
http://аvitya.livejournal.com
Хотели, как лучше, а получилось даже хуже...
Лозунг шахматиста: На каждый шах - ответим матом!
Agregat is offline   Reply With Quote Quote selected
Old Apr 2, 2003, 19:24   #18
Дошкольник
 
Nemra's Avatar
 
Join Date: Jul 2002
Location: South Park
Posts: 82
Rep Power: 0
Reputation: 10
Quote:
Originally posted by Agregat

2 два решения привел, не знаю какое...
второе почти такое же, как и у уважаемого товарища Немра.
Странно, с чего это так меня стали уважать
А по поводу std::stack & std::queue: так они не просто обертки, а логические обертки. Было бы странно ожидать от стека функций типа push_back, если push у него всегда в одну сторону. Причина также в определении полного и непротеворечивого интерфейса, так как не логично в стеке иметь функцию типа push_front. Anyway, не важно кто через кого определен важен интерфейс, а то по твоему примеру можно использовать и vector и list.
Все таки если класс стек существует - значит это кому-то надо

To DaNYer: не понимаю в чем подмигивание, но сочуствую, что пишите контейнерные части на С. Такого геморроя как работа в С с "осмысленными" структурами, а не просто кусками данных, еще надо поискать
__________________
std::for_each( users.begin(), users.end(), std::bind2nd( std::mem_fun(&ForumMember::sendMessage), "Hello"))
Nemra is offline   Reply With Quote Quote selected
Old Apr 3, 2003, 04:26   #19
Administrator
 
greka's Avatar
 
Join Date: Sep 2001
Location: @work
Posts: 5,341
Rep Power: 10
Reputation: 23
Send a message via ICQ to greka
Wink

хорошо сидим!
__________________
И повешенные могут качаться в неположенную сторону. /С.Е.Лец/
greka is offline   Reply With Quote Quote selected
Old Apr 3, 2003, 07:54   #20
Грустно...
 
Agregat's Avatar
 
Join Date: Aug 2002
Location: Там, где всегда идут дожди
Posts: 21,451
Rep Power: 10
Reputation: 144
Send a message via ICQ to Agregat Send a message via MSN to Agregat
Уважаемый тов. Немра:
вами скзанное очевидно
Я согласен во многом.
Но на самом деле, если я знаю, что у меня стек, то на хрена мне использовать push_front, insert, erase, resize и т.д.Хотя последняя функция, все таки может быть и нужна.
Поэтому это как-бы защита "от дурака"

Гарик, выпьем?
__________________
http://аvitya.livejournal.com
Хотели, как лучше, а получилось даже хуже...
Лозунг шахматиста: На каждый шах - ответим матом!
Agregat is offline   Reply With Quote Quote selected
Old Apr 3, 2003, 09:52   #21
Administrator
 
greka's Avatar
 
Join Date: Sep 2001
Location: @work
Posts: 5,341
Rep Power: 10
Reputation: 23
Send a message via ICQ to greka
Wink

Agregat, не сейчас - на выходные, сам знаешь
__________________
И повешенные могут качаться в неположенную сторону. /С.Е.Лец/
greka is offline   Reply With Quote Quote selected
Old Apr 3, 2003, 10:26   #22
Грустно...
 
Agregat's Avatar
 
Join Date: Aug 2002
Location: Там, где всегда идут дожди
Posts: 21,451
Rep Power: 10
Reputation: 144
Send a message via ICQ to Agregat Send a message via MSN to Agregat
Ок
Гарик,
выпьем обязательно!
__________________
http://аvitya.livejournal.com
Хотели, как лучше, а получилось даже хуже...
Лозунг шахматиста: На каждый шах - ответим матом!
Agregat is offline   Reply With Quote Quote selected
Old Apr 4, 2003, 17:08   #23
Главный инспектор снов
 
Dream_InspectoR's Avatar
 
Join Date: Jan 2002
Location: Yerevan, Armenia
Posts: 330
Rep Power: 7
Reputation: 10
Send a message via ICQ to Dream_InspectoR
@nker Grigoryan в своем амплуа
__________________
Kill'em!!! Kill'em all!!!
Dream_InspectoR is offline   Reply With Quote Quote selected
Old Apr 4, 2003, 19:02   #24
Banned
 
DaNYer's Avatar
 
Join Date: Oct 2002
Location: Brooklyn, New York
Posts: 3,760
Rep Power: 0
Reputation: 10
kstati vot:

starcraft r u l e s
DaNYer is offline   Reply With Quote Quote selected
Reply

« :-) | Stolbi »

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 08:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
This board was founded on September 29, 2001
Powered by Viper Internet

Affordable Web Hosting | ParevNet

Buy text link