青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Tauruser

Enjoy Every Day
posts - 34, comments - 95, trackbacks - 0, articles - 5
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

數(shù)組空間組織與鏈表空間組織的堆棧實現(xiàn)


為了增強實現(xiàn)的堆棧通用性,用堆棧實現(xiàn)進(jìn)行模板化。代碼如下:

//////////// //stack.h /////////////// /
////////////////////////////////////////////////

#ifndef?stack_h_
#define ?stack_h_
#include?
< iostream >
using ? namespace ?std;

template?
< class ?T > ? class ?stack
{
public :
????
virtual ? void ?push( const ?T? & x) = 0 ;
????
virtual ? void ?pop() = 0 ;
????
virtual ?T?Top()? const ? = ? 0 ;
????
virtual ? bool ?IsEmpty()? const ? = 0 ;
????
virtual ? bool ?IsFull()? const = 0 ;

}
;

#endif
//////////// segstack.cpp ///////////////
///////// 數(shù)組組織代碼 ////////////////////////


#include?
" stack.h "

template?
< class ?T > ? class ?SegStack:? public ?stack < T >
{
public :
????SegStack(
int ?mSize);
????
~ SegStack();
????
bool ?IsEmpty()? const ;
????
bool ?IsFull()? const ;
????
void ?push( const ?T? & x);
????
void ?pop();
????T?Top()?
const ;
????
// friend?ostream&?operator?<<?(ostream&?out,const?SegStack<T>&?seg);
????template? < ? class ?T > ?friend?ostream & ? operator ? << ?(ostream & ? out , const ?SegStack < T >& ?seg);?
????
void ?output(ostream & ? out )? const ;

private :
????T?
* s;
????
int ?maxSize;
????
int ?top;
}
;

template?
< class ?T > ?SegStack < T > ::SegStack( int ?mSize):top( - 1 )
{
????maxSize
= mSize;
????s?
= ? new ?T[maxSize];

}

template?
< class ?T > ?SegStack < T > :: ~ SegStack()
{
????delete?[]s;
}


template?
< class ?T > ? bool ?SegStack < T > ::IsFull()? const
{????????
????
return ?(top == (maxSize - 1 ));
}


template?
< class ?T > ? bool ?SegStack < T > ::IsEmpty()? const
{
????
return ?(top ==- 1 );
}


template?
< class ?T > ? void ?SegStack < T > ::push( const ?T? & x)
{
????
if (IsFull())
????
{
????????cout
<< " The?stack?is?full " << endl;
????}
else
????
{
????????s[
++ top] = x;
????}

}


template?
< class ?T > ? void ?SegStack < T > ::pop()
{
????
if (IsEmpty())
????
{
????????cout
<< " The?stack?is?empty " << endl;
????}
else ????
????
{
????????top
-- ;
????}

}

template?
< class ?T > ?T?SegStack < T > ::Top()? const
{
????
return ?s[top];
}


template?
< class ?T > ? void ?SegStack < T > ::output(ostream & ? out )? const
{
????
out << " The?stack?list?is: " ;
????
for ( int ?i( 0 );i <= top;i ++ )
????????
out << " ? " << s[i];
????
// out<<endl;
}


template?
< class ?T > ?ostream & ? operator ? << ?(ostream & ? out , const ?SegStack < T >& ?seg)
{
????
out << " The?stack?list?is: " ;
????
for ( int ?i( 0 );i <= seg.top;i ++ )
????????
out << " ? " << seg.s[i];
????
// out<<endl;
????
// seg.output(out);
???? return ? out ;
}
/////////////// linkstack.cpp ////////////
//////////// //鏈表實現(xiàn) ///////////////////// //

#include? " stack.h "

template?
< class ?T1 > ? struct ?Element
{
????T1?content;
????Element
* ?next;
}
;
template?
< class ?T1 > ? class ?LinkStack:? public ?stack < T1 >
{
public :
????LinkStack();
????
~ LinkStack();
????
bool ?IsEmpty()? const ;
????
bool ?IsFull()? const ;
????
void ?push( const ?T1? & x);
????
void ?pop();
????T1?Top()?
const ;
????template?
< class ?T > ?friend?ostream & ? operator << (ostream & ? out ,? const ?LinkStack < T1 >& ?linkstack);
????
void ?output(ostream & ? out )? const ;

private :

????Element
< T1 >* ?top;
}
;
template?
< class ?T1 > ? bool ?LinkStack < T1 > ::IsEmpty()? const
{
????
if (top == NULL)
????????
return ? true ;
????
else
????????
return ? false ;
}

template?
< class ?T1 > ? bool ?LinkStack < T1 > ::IsFull()? const
{
????
return ? false ;
}

template?
< class ?T1 > ?LinkStack < T1 > ::LinkStack():top(NULL)
{
}

template?
< class ?T1 > ?LinkStack < T1 > :: ~ LinkStack()
{
????
while (top != NULL)
????
{
????????Element
< T1 >* ?temp;
????????temp
= top;
????????top
= top -> next;
????????delete?temp;
????}

}


template?
< class ?T1 > ? void ?LinkStack < T1 > ::push( const ?T1? & x)
{
????Element
< T1 >* ?temp = new ?Element < T1 > ;
????temp
-> content = x;
????temp
-> next = top;
????top
= temp;
}

template?
< class ?T1 > ? void ?LinkStack < T1 > ::pop()
{
????
if (top != NULL)
????
{
????????Element
< T1 >* ?temp;
????????temp
= top;
????????top
= top -> next;
????????delete?temp;
????}

????
}


template?
< class ?T1 > ?T1?LinkStack < T1 > ::Top()? const
{
????
return ?top -> content;
????
}

template?
< class ?T1 > ?ostream & ? operator << (ostream & ? out ,? const ?LinkStack < T1 >& ?linkstack)
{
????Element
< T1 >* ?temp;
????temp
= linkstack.top;

????
out << " The?stack?list?is: " ;
????
while (temp != NULL)
????
{
????????
out << temp -> content << ' ? ' ;
????????temp
= temp -> next;
????}


????
return ? out ;
}

template?
< class ?T1 > ? void ?LinkStack < T1 > ::output(ostream & ? out )? const
{
????Element
< T1 >* ?temp;
????temp
= top;

????
out << " The?stack?list?is: " ;
????
while (temp != NULL)
????
{
????????
out << temp -> content << ' ? ' ;
????????temp
= temp -> next;
????}

}

沒有寫注釋,有空再補上吧。

Feedback

# re: 算法與數(shù)據(jù)結(jié)構(gòu)實驗(二)  回復(fù)  更多評論   

2006-03-22 17:33 by 任我行
template < class T > class stack
{
public :
virtual void push( const T & x) = 0 ;
virtual void pop() = 0 ; // 這樣子void 類型有些不妥吧。

# re: 算法與數(shù)據(jù)結(jié)構(gòu)實驗(二)  回復(fù)  更多評論   

2006-03-22 18:15 by Tauruser
嗯,你認(rèn)為應(yīng)該如何呢?
我知道有些stack結(jié)構(gòu)直接用pop(),彈出并返回棧頂,但這個模板類已經(jīng)有一個Top()函數(shù)可以做到這個,將pop()返回值設(shè)為void有什么不妥呢?
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            好吊妞这里只有精品| 欧美一进一出视频| 欧美性猛交xxxx乱大交蜜桃| 奶水喷射视频一区| 欧美搞黄网站| 欧美激情区在线播放| 欧美人与性动交a欧美精品| 欧美日韩a区| 国产精品裸体一区二区三区| 国产视频综合在线| 亚洲国产精品久久91精品| 日韩视频免费观看高清完整版| 一区二区三区视频在线播放| 小处雏高清一区二区三区| 麻豆精品在线观看| 99国内精品久久| 亚洲免费在线精品一区| 久久免费精品视频| 国产精品成人国产乱一区| 黄网动漫久久久| 99伊人成综合| 久久久亚洲精品一区二区三区| 亚洲大片精品永久免费| 亚洲视频在线观看三级| 久久综合五月| 国产精品一卡二| 亚洲精品影视| 久久人人97超碰国产公开结果| 亚洲欧洲一级| 久久一区二区三区国产精品| 国产精品福利影院| 亚洲毛片视频| 欧美va亚洲va国产综合| 欧美一区二区三区久久精品茉莉花| 欧美1区3d| 黄色在线一区| 久久大综合网| 亚洲午夜视频在线| 免费观看日韩av| 亚洲一区二区三区午夜| 欧美大片第1页| 在线欧美日韩国产| 国产一区视频在线观看免费| 免费亚洲电影| 亚洲毛片网站| 欧美乱大交xxxxx| 国产精品户外野外| 亚洲韩国一区二区三区| 久久精品30| 亚洲图片你懂的| 欧美日韩一区三区四区| 亚洲黄色免费电影| 你懂的视频欧美| 久久激情视频久久| 国产女人18毛片水18精品| 亚洲永久免费观看| 亚洲手机视频| 国产美女精品| 久久av一区| 久久国产免费| 欲色影视综合吧| 老司机午夜免费精品视频| 亚洲欧美清纯在线制服| 国产拍揄自揄精品视频麻豆| 欧美亚洲在线播放| 欧美在线二区| 伊人精品成人久久综合软件| 久久夜色精品国产欧美乱极品| 久久精品国产一区二区三区| 国产日韩欧美一区二区| 久久精品国产精品亚洲综合| 午夜精品一区二区三区在线视| 国产欧美在线播放| 蜜臀av在线播放一区二区三区| 久久青青草原一区二区| 亚洲精品在线视频| 亚洲视屏一区| 在线成人国产| 亚洲青色在线| 国产精品视频一| 美女被久久久| 欧美日韩一区二区免费在线观看| 欧美日韩情趣电影| 亚洲欧美日韩视频二区| 欧美一区中文字幕| 亚洲精品网址在线观看| 一本色道久久综合精品竹菊| 国产日韩精品视频一区| 欧美成人一区二区| 欧美视频不卡中文| 久久综合久久久| 欧美片第一页| 久久精品主播| 欧美日韩国产精品成人| 欧美一区二区视频在线| 美女脱光内衣内裤视频久久网站| 这里只有精品电影| 久久高清福利视频| 亚洲小视频在线观看| 久久av一区二区三区| 一区二区激情小说| 久久久之久亚州精品露出| 国产精品99久久久久久白浆小说| 久久国产精品黑丝| 亚洲欧美日韩精品久久| 欧美大片在线看| 久久一区二区三区四区| 国产精品日韩久久久| 亚洲欧洲日产国码二区| 尹人成人综合网| 香蕉久久一区二区不卡无毒影院 | 国产乱码精品一区二区三区忘忧草| 欧美va亚洲va国产综合| 国产精品丝袜xxxxxxx| 亚洲国产精品久久久久秋霞蜜臀| 国产日韩欧美在线| 一区二区三区国产| 一本色道久久综合狠狠躁的推荐| 久久美女性网| 久久久久国产精品一区三寸| 欧美视频中文在线看 | 亚洲国产精品va| 激情av一区二区| 欧美在线观看你懂的| 篠田优中文在线播放第一区| 欧美日韩国产首页在线观看| 亚洲福利视频网站| 尤物在线精品| 久久女同互慰一区二区三区| 久久人人爽人人| 红桃视频国产一区| 久久久久国产一区二区| 久久久99久久精品女同性| 国产欧美精品va在线观看| 亚洲一区二区三区免费观看| 亚洲午夜精品在线| 国产精品国码视频| 亚洲一区二区三区激情| 亚洲欧美一级二级三级| 国产精品一区一区| 欧美一区二区在线| 久久综合成人精品亚洲另类欧美| 久久国产精品黑丝| 欧美www视频| 欧美国产日韩一区二区三区| 国产一区二区高清视频| 亚洲综合精品四区| 性色一区二区三区| 国产三级精品在线不卡| 欧美亚洲综合久久| 久久一区二区三区av| 悠悠资源网亚洲青| 欧美激情 亚洲a∨综合| 亚洲美女尤物影院| 性色av一区二区三区在线观看| 国产日韩欧美一区二区| 久久久亚洲国产天美传媒修理工| 欧美激情一区二区三区在线视频观看 | 欧美高清在线一区| 日韩视频在线观看免费| 亚洲欧美日韩久久精品| 国产一区免费视频| 欧美韩日高清| 亚洲欧美电影在线观看| 欧美成人国产一区二区| 亚洲天堂久久| 黄网动漫久久久| 欧美日韩日韩| 久久精品亚洲一区| 亚洲视频香蕉人妖| 免费观看一级特黄欧美大片| 9i看片成人免费高清| 国产偷国产偷亚洲高清97cao| 久久亚洲综合色| 在线中文字幕一区| 欧美大片专区| 久久精品72免费观看| 91久久精品国产91久久性色| 国产精品国产三级国产专播品爱网| 久久久久久国产精品mv| 中文久久精品| 亚洲日本一区二区| 久久在线视频| 性色av一区二区三区红粉影视| 亚洲黄页一区| 狠狠综合久久| 国产日韩精品在线播放| 欧美日韩色综合| 欧美高清在线观看| 久久一二三区| 久久精品女人的天堂av| 亚洲综合首页| 亚洲精品视频免费观看| 男女精品视频| 久久亚洲综合色| 久久久久久尹人网香蕉| 欧美一级免费视频| 亚洲嫩草精品久久| 亚洲性视频网址| 日韩一级精品|