Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typedef struct __stack
- {
- struct __stack *next;
- int value;
- }stack;
- class Stack
- {
- public:
- Stack();
- void Push(int value);
- void Pop(void);
- void Print(void);
- void Read(int pos);
- void Write(int pos,int value);
- int Size(void);
- void Delete(void);
- private:
- stack *p;
- };
- Stack::Stack(void)
- {
- p=new stack;
- p->value=0;
- p->next=NULL;
- }
- void Stack::Push(int value)
- {
- stack *ptr=p;
- while(ptr->next!=NULL)
- ptr=ptr->next;
- ptr->next=new stack;
- ptr=ptr->next;
- ptr->value=value;
- ptr->next=NULL;
- }
- void Stack::Pop(void)
- {
- stack *ptr=p,*prev=p;
- while(ptr->next!=NULL)
- {
- prev=ptr;
- ptr=ptr->next;
- }
- if(ptr!=p)
- {
- delete ptr;
- prev->next=NULL;
- }
- }
- void Stack::Print(void)
- {
- stack *ptr=p;
- ptr=ptr->next;
- while(ptr!=NULL)
- {
- cout << ptr->value << "\t";
- ptr=ptr->next;
- }
- cout <<"\n";
- }
- void Stack::Read(int pos)
- {
- stack *ptr=p;
- int i;
- pos++;
- if(pos>0)
- {
- for(i=0;i<pos;i++)
- if(ptr->next!=NULL)
- ptr=ptr->next;
- cout << ptr->value <<endl;
- }
- }
- void Stack::Write(int pos,int value)
- {
- int i;
- stack *ptr=p;
- pos++;
- if(pos>0)
- {
- for(i=0;i<pos;i++)
- if(ptr->next!=NULL)
- ptr=ptr->next;
- ptr->value=value;
- }
- }
- int Stack::Size(void)
- {
- int i=1;
- stack *ptr=p;
- while(ptr->next!=NULL)
- {
- ptr=ptr->next;
- i++;
- }
- return i;
- }
- void Stack::Delete(void)
- {
- stack *ptr=p,*prev=ptr;
- while(ptr->next!=NULL)
- {
- ptr=p;
- prev=ptr;
- while(ptr->next!=NULL)
- {
- prev=ptr;
- ptr=ptr->next;
- }
- if(ptr!=p)
- {
- delete ptr;
- prev->next=NULL;
- }
- ptr=p;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement