ورود

View Full Version : سوال: کلاس stack با آرایه



haricanboy
سه شنبه 17 دی 1392, 16:14 عصر
سلام
دوستان هر کی بلده لطفاً این کد رو برام توضیح بده
اول اینکه برام بگین کلاً استک چیه و برنامه استک چیکار میکنه بعد در مورد کد


#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <string.h>
#include <conio.h>
#define MAX_STACK_SIZE 5
class stack
{
char buffer[MAX_STACK_SIZE];
int pos;
public:
stack(){pos=-1;buffer[0]=0;}
int isempty(void);
int isfull(void);
void push(char token);
char pop(void);
};
int stack::isempty(void)
{
if (pos==-1)
return 1;
else
return 0;
}//end of stack::isempty
int stack::isfull(void)
{
if (pos==MAX_STACK_SIZE-1)
return 1;
else
return 0;
}//end of stack::isfull
void stack::push(char token)
{
if (pos==MAX_STACK_SIZE-1)
{
cout<<"\nStack is Full\n";
return;
}
buffer[++pos]=token;
}//end of stack::push
char stack::pop(void)
{
if (pos==-1){
cout<<"\nStack is Empty\n";
return NULL;
}
return buffer[pos--];
}//end of stack::pop

روال کار این برنامه رو میخوام بدونم

omidshaman
سه شنبه 17 دی 1392, 16:41 عصر
stack یک ساختار برای ذخیره اطلاعات به شکل LIFO هستش (Last IN FIRST OUT ) یعنی چیزایی که از همه دیرتر داخلش ذخیره میشن از همه هم زودتر خارج میشن مثلا ادرس های داخل مرورگر که با زدن دکمه back آخرین آدرسی که دیده شده میاد .
char buffer[MAX_STACK_SIZE]; یک آرایه با سایز مشخص برای ذخیره اطلاعات
pos محل آخرین داده ورودی stack موقع ساختن شی از کلاس -1 میشه. در صورت اضافه کردن داده جدید(push) اگر از MAX_STACK_SIZE کمتر بود یک واحد بهش اضافه میشه.. موقع صدا زدن pop هم اگر Stack خالی نبود یک واحد کم میشه .
isempty - isFull: چک کردن خالی , پر بودن stack
push اضافه کردن یک عنصر به stack
pop بر گرداندن آخرین آیتم از Stack , حذف اون ایتم