• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 183,  comments - 10,  trackbacks - 0
            連續內存,溢出
              1 #include <iostream>
              2 using namespace std;
              3 
              4 template <typename T>
              5 class DoulStack
              6 {
              7 private:
              8     T* data_;
              9     int top1_;
             10     int top2_;
             11     unsigned size_;
             12 public:
             13     DoulStack(unsigned size = 1000) : data_(new T[size]), top1_(0), top2_(size - 1), size_(size)
             14     {
             15         if (data_ == 0)
             16         {
             17             exit(1);
             18         }
             19     }
             20     DoulStack(const DoulStack& ds) : data_(new T[ds.size_]), top1_(ds.top1_), top2_(ds.top2_), size_(ds.size_)
             21     {
             22         if (data_ == 0)
             23         {
             24             exit(1);
             25         }
             26         memcpy(data_, ds.data_, sizeof (T) * ds.size_);
             27     }
             28     DoulStack& operator = (const DoulStack& ds)
             29     {
             30         if (this != &ds)
             31         {
             32             delete [] data_;
             33             data_ = new T[ds.size_];
             34             if (data_ == 0)
             35             {
             36                 exit(1);
             37             }
             38             top1_ = ds.top1_;
             39             top2_ = ds.top2_;
             40             size_ = ds.size_;
             41             memcpy(data_, ds.data_, sizeof (T) * ds.size_);
             42         }
             43         return *this;
             44     }
             45     ~DoulStack()
             46     {
             47         delete [] data_;
             48     }
             49     bool empty()
             50     {
             51         return empty1() && empty2();
             52     }
             53     bool full()
             54     {
             55         return top1_ - 1 == top2_;
             56     }
             57     bool resize(unsigned size)
             58     {
             59         T* temp = new T[size];
             60         if (temp == 0)
             61         {
             62             exit(1);
             63         }
             64         for (int i = 0; i != top1_; ++i)
             65         {
             66             temp[i] = data_[i];
             67         }
             68         for (int i = size - 1, j = size_ - 1; j != top2_; --i, --j)
             69         {
             70             temp[i] = data_[j];
             71         }
             72         size_ = size;
             73         delete [] data_;
             74         data_ = temp;
             75     }
             76     void push1(const T& t)
             77     {
             78         if (full())
             79         {
             80             resize(size_ * 2);
             81         }
             82         data_[top1_++= t;
             83     }
             84     void push2(const T& t)
             85     {
             86         if (full())
             87         {
             88             resize(size_ * 2);
             89         }
             90         data_[top2_--= t;
             91     }
             92     void pop1()
             93     {
             94         --top1_;
             95     }
             96     void pop2()
             97     {
             98         ++top2_;
             99     }
            100     T top1()
            101     {
            102         return data_[top1_ - 1];
            103     }
            104     T top2()
            105     {
            106         return data_[top2_ + 1];
            107     }
            108     bool empty1()
            109     {
            110         return top1_ == 0;
            111     }
            112     bool empty2()
            113     {
            114         return top2_ == size_ - 1;
            115     }
            116 };
            117 
            118 int main()
            119 {
            120     DoulStack<int> ds;
            121     for (int i = 0; i < 10++i)
            122     {
            123         ds.push1(i);
            124         ds.push2(9 - i);
            125     }
            126     while (!ds.empty1())
            127     {
            128         cout << ds.top1() << endl;
            129         ds.pop1();
            130     }
            131     while (!ds.empty2())
            132     {
            133         cout << ds.top2() << endl;
            134         ds.pop2();
            135     }
            136     cout << ds.empty() << endl;
            137 }

            posted on 2011-06-17 15:30 unixfy 閱讀(146) 評論(0)  編輯 收藏 引用
            久久久婷婷五月亚洲97号色| 久久伊人影视| 久久精品国产第一区二区三区| 久久偷看各类wc女厕嘘嘘| 国产韩国精品一区二区三区久久| 老司机国内精品久久久久| 婷婷久久五月天| 欧美精品一本久久男人的天堂| 久久天天日天天操综合伊人av| 无码伊人66久久大杳蕉网站谷歌 | av无码久久久久不卡免费网站| 久久综合九色综合欧美狠狠| 伊人久久亚洲综合影院| 久久久久久a亚洲欧洲aⅴ| 精品综合久久久久久98| 久久精品中文字幕有码| 大伊人青草狠狠久久| 中文精品久久久久人妻不卡| 欧美激情精品久久久久久| 国产成人久久AV免费| 亚洲人成精品久久久久| 亚洲性久久久影院| 久久久国产精品| 91久久九九无码成人网站| 久久婷婷国产综合精品| 久久人人爽人人爽人人片AV不| 久久er国产精品免费观看8| 欧美精品一本久久男人的天堂| 久久久久久毛片免费播放| 97久久国产露脸精品国产| 亚洲午夜精品久久久久久app| 久久青青草原精品国产软件| 久久高潮一级毛片免费| 久久成人精品| 亚洲人成电影网站久久| 日本WV一本一道久久香蕉| 亚洲国产婷婷香蕉久久久久久| 欧美久久亚洲精品| 久久久久久国产a免费观看黄色大片| 欧美粉嫩小泬久久久久久久 | 久久青青草视频|