加油,得有理想啊年轻人

快速的过完了C语言的全部细节,又看了C++的语法到类的析构,构造。由于现在对继承,面向对象,内存有一定的了解了,抱着虚心的态度仍然能够学习到一些曾经遗忘或者没有注意的细节。果然是温故可以知新。打算写两个算法题,今天热身题两个栈模拟队列。大概明天顺利的话C++和QT都能复习完。

#include <stack>
//剑指offer第一题双栈模拟队列
class CQueue {
private:
    stack<int> s1;
    stack<int> s2;
    int size;
public:
    CQueue() {
        size=0;
    }
    void appendTail(int value) {
        s1.push(value);
        size++;
    }
    
    int deleteHead() {
        if(size==0)
            return -1;
        while(!s2.empty())
        {                   //只要非空就循环
            s2.pop();       
        }
        while(!s1.empty())
        {
            s2.push(s1.top());
            s1.pop();
        }
        int deldata=s2.top();
        s2.pop();
        size--;
        while(!s2.empty())
        {
            s1.push(s2.top());
            s2.pop();
        }
        return deldata;
    }
};

/**
 * Your CQueue object will be instantiated and called as such:
 * CQueue* obj = new CQueue();
 * obj->appendTail(value);
 * int param_2 = obj->deleteHead();
 */

#include<stack>
//要睡觉了,斗个机灵
class MinStack {
private:
    stack<int> s1;
    long int minx[1000];
    int index;
public:
    /** initialize your data structure here. */
    MinStack() {
        index=0;
        minx[0]=2220000000;
    }
    void push(int x) {
        if(minx[index]>=x)
        {
            minx[++index]=x;
        }
            
        s1.push(x);
    }
    
    void pop() {
        if(s1.top()==minx[index]){
            minx[index]=minx[index-1];
            index--;
        }
            
        
        s1.pop();
    }
    
    int top() {
        return s1.top();
    }
    
    int min() {
        return minx[index];
    }
};

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack* obj = new MinStack();
 * obj->push(x);
 * obj->pop();
 * int param_3 = obj->top();
 * int param_4 = obj->min();
 */

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */

class Solution {
public:
    vector<int> reversePrint(ListNode* head) {
        vector<int> data1;
        vector<int> data2;
        if(head==NULL)
            return data2;
        
        while(head!=NULL)
        {
            data1.push_back(head->val);
            head=head->next;
        }
        for(vector<int>::iterator it=data1.end()-1;it!=data1.begin();it--)
        {
            data2.push_back(*it);
        }
        data2.push_back((*data1.begin()));
        return data2;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值