• <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
            連續(xù)內(nèi)存,溢出
              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 閱讀(153) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            国产成人久久精品一区二区三区| 亚洲精品99久久久久中文字幕| 最新久久免费视频| 国产精品欧美亚洲韩国日本久久 | 久久av无码专区亚洲av桃花岛| 狠狠色伊人久久精品综合网| 亚洲国产一成人久久精品| 激情五月综合综合久久69| 久久人人爽人人爽人人AV| 久久精品国产99久久丝袜| 亚洲欧美成人综合久久久| 久久亚洲精品无码AV红樱桃| 综合网日日天干夜夜久久| 一本色道久久综合狠狠躁| 久久无码AV中文出轨人妻| 国产高清美女一级a毛片久久w| 久久久久人妻一区二区三区vr| 亚洲人成伊人成综合网久久久| 一97日本道伊人久久综合影院| 亚洲欧美日韩久久精品| 热99RE久久精品这里都是精品免费 | 国产精品岛国久久久久| 国产精品久久毛片完整版| 品成人欧美大片久久国产欧美...| 久久中文字幕人妻熟av女| 色婷婷综合久久久久中文| 久久99亚洲网美利坚合众国| 亚洲综合伊人久久综合| 精品久久久中文字幕人妻| 一本久久精品一区二区| 亚洲精品无码久久毛片| 久久午夜无码鲁丝片| 久久久久国产精品麻豆AR影院| 久久综合综合久久狠狠狠97色88| 久久久久久久综合日本亚洲| 久久人妻少妇嫩草AV蜜桃| 免费精品国产日韩热久久| 99久久国产亚洲高清观看2024 | 亚洲成色WWW久久网站| 精品一区二区久久久久久久网站| 久久亚洲AV成人无码国产|