ورود

View Full Version : مبتدی: نحوه ی عملکرد یک stack



smemamian
جمعه 03 آذر 1391, 22:44 عصر
سلام دوستان

این برنامه یک مثال برای pop و push یک استک(پشته) هست .

#include <cstdlib>
#include <iostream>

using namespace std;

#define maxlen 80
class stack{
char str1[maxlen];
int first ;

public:
void clear(void);
char top(void);
int empty(void);
int full(void);
void push(char chr);
char pop(void);
};
void stack::clear(void)
{
first = 0 ;
}
char stack::top(void)
{
return (str1[first]);
}
int stack::empty(void)
{
return (first == 0);
}
int stack::full(void)
{
return (first == maxlen-1);
}

void stack::push(char chr)
{
str1[++first] = chr ;
}
char stack::pop(void)
{
return (str1[first--]);
}

int main(int argc, char *argv[])
{
stack mystack ;
char str[11] = "0123456789" ;
int length;
mystack.clear();
cout<<"\n load character data on stack" << endl ;
length =strlen(str);
for (int i=0 ; i<length; i++){
if (!mystack.full())
mystack.push(str[i]);
cout<<str[i]<<endl;
}
cout << "\n unload character data from stack" <<endl;
while(!mystack.empty())
cout << mystack.pop() << endl;
cout << endl << endl;


system("PAUSE");
return EXIT_SUCCESS;
}



چند سوال داشتم :

1- خط 55 چگونه عمل می کنه ؟ مثلاً اگر i برابر با 2 باشد وقتی به push می رود چه می شود ؟

2- از خط 36 تا 39 chr نباید (return (chr بشود ؟

3- void رو سرچ کردم و مطالب مختلفی رو خوندم ولی در برنامه ها متوجه نمیشم کارش چیه ؟ مثلاً خط 12 !

farazjalili
جمعه 03 آذر 1391, 23:35 عصر
سلام
چند سوال داشتم :

1- خط 55 چگونه عمل می کنه ؟ مثلاً اگر i برابر با 2 باشد وقتی به push می رود چه می شود ؟
اگر i برابر 2 باشد مقدار 2 وارد stack می شو د ( این خط با استفاده از تابع pop کلاس mystack یک مقداری را در stack قرار می دهد

2- از خط 36 تا 39 chr نباید (return (chr بشود ؟
نه احتیاجی به این کار نیس با فراخوانی تابع push مقدار پاس داده شده به آن در stack ما قرار می گیرد ( که stack ما همان str1 است )

3- void رو سرچ کردم و مطالب مختلفی رو خوندم ولی در برنامه ها متوجه نمیشم کارش چیه ؟ مثلاً خط 12 ![/QUOTE]
توابع در زبان های برنامه نویسی معمولا یک سری پارامتر ورودی دارند و یک خروجی که خروجی تابع با استفاده از کلمه return مشخص می شود حال اگر تابع ما هیچ گونه خروجی نداشته باشد در اعلان آن تابع void می نویسم

مسعود اقدسی فام
جمعه 03 آذر 1391, 23:47 عصر
فقط یه اصلاح در سوال یک: اگه فرض کنیم مقدار i عدد 2 باشه مقدار [str[2 وارد پشته می‌شه و نه خود 2.

یه سوال هم از شمایی که سوال پرسیدی دارم. یعنی برام جالبه بدونم. چطور در مورد یه کلاس پیاده‌سازی شده برای پشته و غیره داریم بحث می‌کنیم. اما نمی‌دونید void چیه؟! اصولا باید تدریس شده باشه.