posts - 18,  comments - 1,  trackbacks - 0


          #include<iostream>
          using namespace std;
          typedef int T;

          class Node{
          ????? T data;
          ????? Node *next;
          public:
          ?????? Node(T t):data(t),next(NULL){}
          ?????? friend class List;?????
          ?????? };
          ?????
          class List{
          ????? Node * head;
          ????? int len;
          public:
          ??????? List(int len=0):len(len),head(NULL){}
          ??????? ~List(){clear();}
          ??????? Node* & getp( int pos ); 
          ??????? void insert( T d, int pos=0 );//插入
          ??????? int size();
          ??????? bool empty();
          ?????? ?void travel();//遍歷
          ????????void clear();
          ??????? int find( T d );//查找
          ??????? bool update( T d1, T d2 );//更新
          ??????? bool erase( T d );//刪除
          ??????? T getHead();
          ??????? T getTail();
          ??????? void reverse();
          ????? };
          void List::insert(T d,int pos){
          ???? Node *p=new Node(d);
          ???? Node *&pn=getp(pos);
          ???? p->next=pn;
          ???? pn=p;
          ???? ++len;
          ???? }
          ????
          Node*& List::getp(int pos){//返回一個引用而不是一個復制的數據
          ???? if(pos<0||pos>len)
          ??????????? pos=len;??????????????????
          ???? if(pos==0)
          ???????????? return head;
          ?????? Node*p=head;?????
          ???? for(int i=0;i<pos-1;i++)
          ??????????? p=p->next;
          ???? return p->next;
          ???? }
          int List::size(){
          ??? return len;
          ??? }
          bool List::empty(){
          ???? return head==NULL;
          ???? }?
          ??????
          void List::clear(){
          ????? while(head!=NULL){
          ???? Node *p =head->next;
          ???? delete head;
          ???? head=p;
          ???? }??
          ???? len=0 ;???????????????
          ???? }
          void List::travel(){
          ???? Node*p=head;
          ???? while(p!=NULL){
          ???? cout<<p->data<<' ';
          ???? p=p->next;??????????????
          ???? }
          ???? cout<<endl;??
          ???? }
          int List::find( T d ){
          ???? Node*p=head;
          ???? int pos=0;
          ????
          ???? while(p!=NULL){
          ??????? if(d==p->data)
          ??????????? return pos;
          ??????? p=p->next;
          ??????? ++pos;???????????????
          ???? }????
          ?????????? return -1;
          ???? }
          bool List::update( T d1, T d2 ){
          ???? int t=find(d1);
          ???? if(t==-1)
          ?????? return false;
          ???? Node*&p=getp(t);
          ???? p->data=d2;
          ???? return true;
          ???? }
          bool List:: erase(T d){
          ???? int t=find(d);
          ???? if(t==-1)
          ?????? return false;
          ????? Node*&pn=getp(t);
          ????? Node*p=pn;
          ????? pn=pn->next;
          ????? delete p;
          ????? --len;?????
          ???? return true;
          ???? }
          ?void List:: reverse(){
          ????? Node *ph=head;
          ????? Node *p=NULL;
          ????? head=NULL;
          ????? while(ph!=NULL){
          ??????? p=ph;
          ??????? ph=ph->next;
          ???????
          ??????? p->next=head;
          ??????? head=p;
          ???? }
          ????
          ????? }
          ?????
          T List::getHead(){
          ????? if(empty())
          ????????? return T();??????????
          ??????? return head->data;?????????
          ????? }
          T? List::getTail(){
          ????? if(empty())
          ?????????? return T();
          ?????? return getp(len-1)->data;????????????
          ????? }
          int main(){
          ??? List obj;
          ?obj.reverse();
          ?obj.travel();
          ?obj.insert(1,-1);
          ?obj.insert(2,-1);
          ?obj.insert(3,-1);
          ?obj.insert(4,-1);
          ?obj.insert(5);
          ?obj.insert(6);
          ?obj.insert(7);
          ?obj.insert(8);
          ?obj.insert(60,6);
          ?obj.insert(40,4);
          ?obj.insert(20,2);
          ?obj.travel();
          ?obj.reverse();
          ?obj.travel();
          ??? cout<<obj.find(60)<<endl;
          ?obj.update(20,600);
          ?obj.travel();
          ?obj.erase(600);
          ?obj.travel();
          ?cout<<obj.getHead()<<' '<<obj.getTail()<<endl;
          ?int t;
          ?cin>>t;
          ?return 0;
          ??? }

          posted on 2007-01-23 21:59 sunny 閱讀(181) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2007年1月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          相冊

          收藏夾

          朋友

          搜索

          •  

          最新評論

          評論排行榜

          主站蜘蛛池模板: 浪卡子县| 瑞金市| 手机| 黎城县| 巩义市| 锦州市| 天等县| 涞水县| 洪泽县| 涪陵区| 云南省| 锡林郭勒盟| 莎车县| 齐齐哈尔市| 延津县| 莱州市| 安丘市| 诸城市| 文安县| 体育| 始兴县| 眉山市| 海宁市| 开鲁县| 娱乐| 东阿县| 于都县| 镇原县| 炎陵县| 南开区| 咸丰县| 金坛市| 息烽县| 图木舒克市| 林州市| 巧家县| 临海市| 林甸县| 休宁县| 漳浦县| 瑞昌市|