با سلام خدمت دوستان چگونه مي توان پشته ي با قابليت اضافه كردن تعداد نامحدودعنصر را در سي++تعريف كرد وبه آن عنصري را اضافه ويا از آن كم كرد
با تشكر
Printable View
با سلام خدمت دوستان چگونه مي توان پشته ي با قابليت اضافه كردن تعداد نامحدودعنصر را در سي++تعريف كرد وبه آن عنصري را اضافه ويا از آن كم كرد
با تشكر
باید از Linked List استفاده کنید. برای اطلاعات بیشتر راجع به Linked List و Stack در ++C هم میتونید از گوگل استفاده کنید!
ایلیا
البته استفاده از linked_list روش بسيار خوبيه . اما روشهاي ديگري هم وجود داره كه من كدهاي يك سري رو يراتون مي ذارم كه با كلاس ها نوشته شده و بسيار بهينه است.( دقت كنين كه من يك هدر و دو فايل كد رو اينجا مي ذارم ):
کد:#ifndef STACK_H
#define STACK_H
const int msize=60;
class stack{
private:
char *s;
int tos;
int size;
int i;
public:
bool isfull();
bool isempty();
stack(int size);
~stack();
void push(char);
char pop();
};
#endif
اين هم يك نمونه اجرايي . اميدوارم كه مفيد باشه :)کد:#include"stack.h"
#include<iostream>
using namespace std;
bool stack::isfull(){
return ((tos==size)?true:false);}
bool stack::isempty(){
return ((tos==0)?true:false);}
stack::stack(int mmsize=msize){
size=mmsize;
s=new char[size];
tos=0;
i=0;
}
stack::~stack(){
delete []s;}
void stack::push(char ch){
if(!isfull())
s[tos++]=ch;
else
cout<<"stack is full!!";
}
char stack::pop()
{
if(!isempty()){
cout<<s[i];
i++;}
// return s[--tos];
else
cout<<"stack is empty!!";
return 0;
}
کد:#include<iostream>
#include"stack.h"
using namespace std;
int main()
{
stack s(2);
s.push('a');
s.push('b');
cout<<s.pop();
cout<<s.pop();
cout<<s.pop();
cin.get();
}