zoukankan      html  css  js  c++  java
  • 单链表1(悲剧文本)

    你有一个破损的键盘。键盘上的所有键都可以正常工作,但有时Home键或者End键会自动按下。你并不知道键盘存在这一问题,而是专心打稿子,甚至连显示器都没打开。当你打开显示器之后,展现在你面前的是一段悲剧文本。

    输入

    输入只有一行,即这份文件,这份文件只包含小写字母和'['以及']',"["表示HOME,"]"表示END键。输入结束标志为文件结束符(EOF)。

    输出

    你的任务是在打开显示器之前,计算出这份悲剧的文档。

    样例输入

    kdg[gek]h[itj

    de[co]vs

    样例

    itjgekkdgh

    codevs

    #include"iostream"
    using namespace std;
    typedef char element;
    class List{
    private:
        element data;
        
    public:List *next;
        List(int data = 0){
            this->data = data;
            this->next = NULL;
        }
        void deleteNote(){            //删除后一个结点
            List *temp = this->next;
            this->next = this->next->next;
            delete temp;
        }
        void show(){
            List *p = this->next;
            while(p){
                cout<<p->data;
                p = p->next;
            }
            cout<<endl;
        }
        List *insertf(element data){
            List *newp = new List(data);
            if(!newp){
                cout<<"out of space!"<<endl;
                return NULL;
            }
            newp->next = this->next;
            this->next = newp;
            return newp;
        }
        List *insertl(element data){
            List *newp = new List(data);
            if(!newp){
                cout<<"out of space!"<<endl;
                return NULL;
            }
            List *last = this;
            while(last->next){
                last = last -> next;
            }
            newp->next = last->next;
            last->next = newp;
            return newp;
        }
        void recover(char *s){
            int i = 0;
            List *p = this;
            while(s[i]!=''){
                if(s[i]=='['){
                    p = this->insertf(s[++i]);
                }
                else if(s[i] == ']'){
                    p = p->insertl(s[++i]);
                }
                else{
                    p = p->insertf(s[i]);
                }
                i++;
            }
        }
    };
        
    //kdg[gek]h[itj
    //de[co]vs
    int main(){
        List L,*p = &L;
        char *str = "kdg[gek]h[itj";
        L.recover(str);
        L.show();
        return 0;
    }
    BY oleolema
  • 相关阅读:
    双指针算法_最长连续不重复子列长度
    前缀和_子矩阵的和
    前缀和
    高精度算法_大数除以小数
    高精度算法_大数乘小数
    高精度算法_大数相减
    高精度算法_大数加法
    一维差分矩阵
    二维差分矩阵
    整数二分
  • 原文地址:https://www.cnblogs.com/oleolema/p/9028397.html
Copyright © 2011-2022 走看看