Свързано представяне на стек

Броят на числата, по-малки от последното реализирана чрез свързано представяне на стек.

Публикувано в 12а. Постоянна връзка.

2 Responses to Свързано представяне на стек

  1. dreanor каза:
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    class stackNode
    {
    public:
        int value;
        stackNode* next;
    };
    
    class stack
    {
    private:
        stackNode* top;
        int length;
    
    public:
        stack();
        bool isEmpty() const;
        void push(int X);
        bool pop(int &x);
        int Length() const;
        void print() const;
        ~stack();
    };
    
    // инициализиране на стека
    stack::stack()
    {
        top=NULL;
        length=0;
    }
    
    // проверка дали стека е празен
    bool stack::isEmpty() const {
        return top==NULL;
    }
    
    // запис на стойност в стека
    void stack::push(int x)
    {
        stackNode* newTop = new stackNode;
        newTop->value=x;
        newTop->next = top;
        top = newTop;
        ++length;
    }
    
    // извличане на стойност от стека
    bool stack::pop(int &x)
    {
        bool ok = !isEmpty();
        if (ok) {
            stackNode* temp = top;
            top = top->next;
            x = temp->value;
            delete temp;
            --length;
        }
        return ok;
    }
    
    int stack::Length() const
    {
        return length;
    }
    
    void stack::print() const
    {
        stackNode* temp=top;
        if (!isEmpty())
        {
            cout<<"\n Елементите са: \n";
            while(temp->next!=NULL)
            {
                cout<<""<<temp->value<<" ";
                temp=temp->next;
            }
            cout<<temp->value<<endl;
        }
        else cout<<"\n Стека е празен \n";
    }
    
    stack::~stack()
    {
        stackNode* next;
        while (top != NULL)
        {
            next = top->next;
            delete top;
            top = next;
        }
    }
    
    // да се въведат в стек n числа и да се отпечатат тези,
    // които са по-малки от последното
    int main ( )
    {
      int n;
      cout<<"vavedete n:";
      cin>>n;
      // инициализираме стека
      stack stk;
      // въвеждаме числата
      int chislo;
      for(int i=1; i<=n; i++) {
        cin>>chislo;
        stk.push(chislo);
      }
      // прочитаме последното
      stk.print();
      int posledno, br=0;
      stk.pop(posledno);
      cout<<"Broqt na po-malkite ot "<<posledno<<" e: ";
      //прочитаме останалите
      for(int i=1; i<n; i++) {
        stk.pop(chislo);
        if(chislo<posledno)
          br++;
      }
      cout<<br<<endl;
      stk.print();
    
      system("pause");
      return 0;
    }
    
    

Вашият коментар