• <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 閱讀(148) 評(píng)論(0)  編輯 收藏 引用

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


            久久精品一区二区影院| 久久只这里是精品66| 天堂久久天堂AV色综合| 亚洲中文字幕无码久久精品1 | 中文字幕精品久久| 中文字幕久久久久人妻| 9久久9久久精品| 久久亚洲精品国产亚洲老地址 | 国产真实乱对白精彩久久| 精品伊人久久久| 一级做a爱片久久毛片| 亚洲午夜精品久久久久久app| 亚洲va国产va天堂va久久| 国产精品嫩草影院久久| 国产精品中文久久久久久久| 青青草国产精品久久| 亚洲日韩中文无码久久| 久久久久亚洲精品中文字幕| 久久综合香蕉国产蜜臀AV| 久久天天躁狠狠躁夜夜av浪潮 | 成人久久综合网| 一本一本久久a久久综合精品蜜桃 一本一道久久综合狠狠老 | 久久AV无码精品人妻糸列| 久久99精品免费一区二区| 国产精品免费看久久久| 久久久久久久女国产乱让韩| 久久性精品| 久久久不卡国产精品一区二区 | 久久久99精品一区二区 | 色妞色综合久久夜夜| 久久久久亚洲av毛片大| 成人a毛片久久免费播放| 久久综合九色综合97_久久久| 精品久久久久久中文字幕人妻最新| 漂亮人妻被中出中文字幕久久| 性做久久久久久久久| 午夜视频久久久久一区| 午夜精品久久影院蜜桃| 久久频这里精品99香蕉久| 一97日本道伊人久久综合影院| 伊人色综合久久天天人守人婷|