• <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>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開(kāi)心的工作
            簡(jiǎn)單、開(kāi)放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            寫(xiě)了個(gè)雙向鏈表

            Posted on 2009-04-05 23:43 S.l.e!ep.¢% 閱讀(1932) 評(píng)論(3)  編輯 收藏 引用 所屬分類(lèi): Data Struct

            #include<iostream.h>

            template<class Type>
            struct nodeType
            {??
            ?Type info;
            ?nodeType<Type>? *link;
            ?nodeType<Type>? *back;
            };

            template<class Type>
            class doublelist
            {
            public:
            ?doublelist();
            ?// doublelist(const doublelist<Type>& otherlist);
            ?const doublelist<Type>&operator=(const doublelist<Type>&otherlist);

            ?virtual ~doublelist();

            ?void initializelist();
            ??? void destory();

            ?bool isEmptylist();
            ?void print();
            ?void rprint();
            ?int? length();

            ??? void insertItem(const Type& insertItem);
            ?void deleteItem(const Type& deleteItem);

            private:
            ??? nodeType<Type>? *first;
            };

            template<class Type>
            const doublelist<Type>& doublelist<Type>::operator=(const doublelist<Type>& otherlist)
            {??
            ??? if(first != NULL)
            ?{?
            ??destory();
            ?}

            ?if(this != &otherlist)
            ?{?
            ??if(otherlist.first == NULL)
            ??{
            ???first = NULL;
            ??}
            ??else
            ??{??
            ???nodeType<Type>* pointer = otherlist.first;
            ???nodeType<Type>* this_pointer = first;
            ???
            ??????????? while( pointer != NULL )
            ???{
            ????nodeType<Type>* newNode = new nodeType<Type>;
            ????newNode->info = pointer->info;
            ????newNode->link = NULL;
            ????newNode->back = NULL;

            ????if( this_pointer == NULL )
            ????{
            ?????this_pointer = first = newNode;
            ?????newNode->back = NULL;
            ?????newNode->link = NULL;
            ????}
            ????else
            ????{
            ?????newNode->back = this_pointer;
            ?????newNode->link = NULL;

            ?????this_pointer->link = newNode;
            ?????this_pointer = this_pointer->link;
            ????}????????
            ????
            ????pointer = pointer->link;
            ???}???
            ??}
            ?}

            ?return *this;
            }

            template<class Type>
            doublelist<Type>::~doublelist()
            {
            ?nodeType<Type>? *temp;
            ???
            ?while( first != NULL)
            ?{??
            ??temp? = first;
            ??first = first->link;
            ??delete temp;
            ?}
            ?
            ?//cout<<"析構(gòu)函數(shù)被調(diào)用"<<endl;
            }

            template<class Type>
            doublelist<Type>::doublelist()
            {????
            ?first = NULL;
            }

            template<class Type>
            void doublelist<Type>::initializelist()
            {?
            ?doublelist<Type>::destory();
            }

            template<class Type>
            bool doublelist<Type>::isEmptylist()
            {?
            ?return(first == NULL);
            }

            template<class Type>
            void? doublelist<Type>::destory()
            {
            ?nodeType<Type> *temp;
            ?
            ?while( first != NULL)
            ?{
            ??temp? = first;
            ??first = first->link;
            ??delete temp;
            ?}
            }

            template<class Type>
            void doublelist<Type>::print()
            {?
            ?nodeType<Type> *current;
            ?current=first;
            ?while(current!=NULL)
            ?{
            ??cout<<current->info<<" ";
            ??????? current=current->link;
            ?}
            }

            template<class Type>
            void doublelist<Type>::rprint()
            {?
            ?nodeType<Type> *current = first;
            ?while(current!=NULL && current->link!= NULL)
            ??current = current->link;

            ?while(current!=NULL)
            ?{
            ??cout<<current->info<<" ";
            ??????? current=current->back;
            ?}
            }

            template<class Type>
            int doublelist<Type>::length()
            {??
            ?int count=0;
            ?nodeType<Type> *current;
            ?current=first;
            ?while(current!=NULL)
            ?{
            ??count++;
            ??current=current->link;
            ?}
            ?return count;
            }

            template<class Type>
            void doublelist<Type>::insertItem(const Type& insertItem)
            {
            ?nodeType<Type>* pointer = first;
            ?bool bFind = false;

            ?while( pointer != NULL )
            ?{
            ??if( pointer->info == insertItem )
            ??{
            ???bFind = true;
            ???break;
            ??}
            ??else
            ??{
            ???pointer = pointer->link;
            ??}
            ?}

            ?if( bFind )
            ?{
            ??cout << insertItem << " have already exist!!" << endl;
            ?}
            ?else
            ?{
            ??nodeType<Type>* newnode = new nodeType<Type>();

            ??if( first == NULL )
            ??{
            ???first = newnode;
            ????? newnode->back = NULL;
            ??}
            ??else
            ??{
            ???pointer = first;
            ???while( pointer->link != NULL )
            ????pointer = pointer->link;

            ???pointer->link = newnode;
            ???newnode->back = pointer;
            ??}

            ??newnode->link = NULL;
            ??newnode->info = insertItem;
            ?}
            }

            void main()
            {
            ?doublelist<int> b,c;
            ?
            ?int num = 0, i = 0, j = 0;
            ?cout<<"please input the count of number:"<<endl;
            ?cin>>num;

            ?while(i < num)
            ?{
            ??cout<<"please input the number:";
            ??cin >> j;
            ??cout<<endl;
            ??b.insertItem(j);
            ??i++;
            ?}

            ?cout << "b normal: ";
            ??? b.print();
            ?cout << endl;

            ?c=b;
            ?
            ?cout << "normal: ";
            ?c.print();
            ?cout << endl;
            ?
            ?cout << "not normal: ";
            ?c.rprint();
            ?cout << endl;
            }

            Feedback

            # re: 寫(xiě)了個(gè)雙向鏈表  回復(fù)  更多評(píng)論   

            2009-04-06 00:16 by 陳梓瀚(vczh)
            你的接口表達(dá)出來(lái)的不是一個(gè)鏈表,而是一個(gè)集合。而且好像還沒(méi)辦法從doublelist<T>里面訪(fǎng)問(wèn)那些內(nèi)容……

            # re: 寫(xiě)了個(gè)雙向鏈表  回復(fù)  更多評(píng)論   

            2009-04-06 09:16 by S.l.e!ep.¢%
            不好意思,樓上的,被你看穿了,我會(huì)改進(jìn)的。

            # re: 寫(xiě)了個(gè)雙向鏈表  回復(fù)  更多評(píng)論   

            2009-04-06 23:59 by wZt
            雙向鏈表似乎沒(méi)有很復(fù)雜 即使你想寫(xiě)雙向列表也不用這么多代碼。。

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


            久久亚洲国产午夜精品理论片| 伊人久久大香线焦AV综合影院| 国产三级观看久久| 久久人人爽人人澡人人高潮AV| 久久无码精品一区二区三区| 久久久久久久波多野结衣高潮 | 影音先锋女人AV鲁色资源网久久 | 久久这里有精品| 人妻无码αv中文字幕久久琪琪布| 精品久久无码中文字幕| 99精品伊人久久久大香线蕉| 亚洲日韩欧美一区久久久久我| 日韩人妻无码一区二区三区久久| 久久99精品综合国产首页| 污污内射久久一区二区欧美日韩| 无码人妻少妇久久中文字幕蜜桃| 伊人色综合久久天天| 久久午夜福利无码1000合集| 国产午夜福利精品久久2021| 久久久精品波多野结衣| 久久精品国产AV一区二区三区| 久久99久久99小草精品免视看| 亚洲欧美成人久久综合中文网| 丰满少妇人妻久久久久久 | 狼狼综合久久久久综合网| 999久久久免费国产精品播放| 国产精品久久久久久久久软件| 色综合久久中文色婷婷| 免费久久人人爽人人爽av| 亚洲综合精品香蕉久久网97| 亚洲精品白浆高清久久久久久 | 香港aa三级久久三级老师2021国产三级精品三级在 | 人妻无码精品久久亚瑟影视| 青青热久久综合网伊人| 浪潮AV色综合久久天堂| 亚洲国产日韩欧美综合久久| 国产99久久久久久免费看| 久久发布国产伦子伦精品| 久久久久久久久久久精品尤物| 久久99精品久久久久久齐齐| 久久er热视频在这里精品|