• 数据结构~~~线性表复习(栈的应用)


    // 线性表(栈的应用).cpp: 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include"iostream"
    #include"string"
    using namespace std;
    template <class T>
    class Stack
    {
    private:
        int top;
        T * S;
        int size;
    public:
        Stack();
        Stack(int x);
        void push(T x);
        bool isempty();
        bool isfull();
        T gettop();
        T pop();
        void clear();
    
    };
    
    template<class T>
    Stack<T>::Stack()
    {
        S = new T[100];
        top = -1;
        size = 100;
    }
    template<class T>
    Stack<T>::Stack(int x)
    {
        S = new T[x];
        top = -1;
        size = x;
    }
    template<class T>
    bool Stack<T>::isempty()
    {
        if (top == -1)
        {
            return true;
        }
        else
            return false;
    }
    template<class T>
    bool Stack<T>::isfull()
    {
        if (top == size - 1)
        {
            return true;
        }
        else return false;
    }
    template<class T>
    void Stack<T>::push(T x)
    {
        if (!isfull())
        {
            top++;
            S[top] = x;
        }
    }
    template<class T>
    T Stack<T>::pop()
    {
        if (!isempty())
        {
            return S[top--];
        }
    }
    template<class T>
    T Stack<T>::gettop()
    {
        return S[top];
    }
    template<class T>
    void Stack<T>::clear()
    {
        top = -1;
    }
    //栈的应用··1数制转换
    /*template<class T>//T只能是数的类型
    void conversion(T x, T flag)
    {
        Stack<T> s;
        while (x)
        {
            s.push(x%flag);
            x = x / flag;
        }
        while (!s.isempty())
        {
            cout << s.pop();
        }
        cout << endl;
    }
    int main()//用于测试数制转换的主程序
    {
        int x, flag;
        cin >> x >> flag;
        conversion<int>(x, flag);
    
        return 0;
    }*/
    
    
    
    //栈的应用··2括号匹配的检验
    /*bool   bracket( char * s )
    {
        int length = strlen(s);
        int FLAG;
        Stack<char> ch;
        char flag[4] = { '(','[',')',']' };
        for (int i = 0; i < length; i++)
        {
            FLAG = 0;
            for (int j = 0; j < 2; j++)
            {
                if (s[i] == flag[j])
                {
                    ch.push(s[i]);
                    FLAG = 1;
                    break;
                }
            }
            if (FLAG==0)
            {
                switch (s[i])
                {
                case ']':
                    if (ch.pop() != flag[1]) 
                        return false; 
                        break;
                case')': 
                    if (ch.pop() != flag[0]) 
                        return false; break;
                }
            }
    
        }
        return true;
    
    }
    
    int main()
    {
        char s[20];
        cin >> s;
        if (bracket(s))
        {
            cout << "括号检测完成,括号“无误”" << endl;
        }
        else
        {
            cout << "括号检测完成,括号“有误”" << endl;
        }
        return 0;
    }*/
    
    
    //栈的应用··3行编辑程序
    /*说明:
    1:当用户发现刚刚键入的一个字符是错误的时,可以键入补进一个“#”,以表示前一个字符无效
    2:如果发现错误太多且无法补救,则可以键入一个“@”,以表示在“@”之前的本行字符都无效
    */
    /*void  edlin(char *ch)
    {    
        int i = 0;
        Stack <char> s;
        while (ch[i])
        {
            switch (ch[i])
            {
            case '#':s.pop(); break;
            case'@':s.clear();  break;
            default:
                s.push(ch[i]);
                break;
            }
            i++;
        }
        char CH[100];
        int j = 0;
        while (!s.isempty())
        {
            CH[j]= s.pop();
            j++;
        }
        j = j - 1;
        i = 0;
        while (j >= 0)//将字符串反转一下
        {
            ch[i] = CH[j];
            j--;
            i++;
        }
        ch[i] = '';//便于输出最后的结果
    }
    int main()
    {
        char ch[100];
        cin >> ch;
         edlin(ch);
        cout << ch<< endl;
        return 0;
    }*/
       
    
    //栈的应用···4迷宫求解
  • 相关阅读:
    fiddler模拟弱网测试环境
    3.12 获取地址定位
    3.11 第一次个人作业7
    3.10 第一次个人作业6
    3.9 第一次个人作业5
    3.8 第一次个人作业4
    3.7 第一个次个人作业3
    3.6 第一次个人作业2
    3.5 第一次个人作业
    3.4 TextClock的基本使用
  • 原文地址:https://www.cnblogs.com/Disyushen666/p/9457727.html
Copyright © 2020-2023  润新知