数据结构学习 65页 P2

    xiaoxiao2021-03-25  77

    实现代码:

    main.cpp

    #include <iostream> #include "stack.h" #include <stdio.h> using namespace std; int main() { Stack s; int n; int k; cin>>n; k = 2; while(n>1){ if(n%k == 0){ s.push(k); n = n / k; } else{ k++; } } while(!s.empty()){ if(s.top(k)==success){ cout<<k<<" "; s.pop(); } } return 0; }

    stack.h

    #include "utility.h" #include "typedef.h" const int maxstack = 10; class Stack{ public: Stack(); Error_code pop(); Error_code push(const Stack_entry &item); Error_code top(Stack_entry &item) const; bool empty() const; private: int count; Stack_entry entry[maxstack]; }; stack.cpp

    #include "stack.h" Error_code Stack::push(const Stack_entry &item){ /* Precondition: None; Postcondition: If the stack is not full, item is added to the top of the stack. If the stack is full, an Error_code of overflow is returned and the Stack is left unchanged. */ Error_code outcome = success; if(count>=maxstack) outcome = overflow; else entry[count++] = item; return outcome; } Error_code Stack::pop(){ /* Pre: none Post: If the stack is not empty, the top of the stack is removed. If the Stack is empty, an error_code of underflow is returned. */ Error_code outcome = success; if(count==0) outcome = underflow; else --count; return outcome; } Error_code Stack::top(Stack_entry &item) const{ /* Pre: None. Post: If the stack is not empty, the top of the stack is return in item. If the stack is empty, an Error_code of underflow is returned. */ Error_code outcome = success; if(count==0) outcome = underflow; else item = entry[count-1]; return outcome; } bool Stack::empty() const{ /* Pre: None. Post: If the stack is empty, true is returned. Otherwise false is returned. */ if (count>0) return false; else return true; } Stack::Stack(){ /* Pre: None. Post: The stack is initialized to be empty. */ count = 0; } utility.h

    enum Error_code{success,overflow,underflow};

    typedef.h

    typedef int Stack_entry;

    转载请注明原文地址: https://ju.6miu.com/read-35186.html

    最新回复(0)