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

            C++課程設計,我鏈表類,編完之后感覺對鏈表有了更深刻的認識

            //? h9.h???


            #ifndef h9_h_

            #define h9_h_

            #include<iostream>

            using namespace std;


            typedef struct LNode
            {
            ??? struct LNode* next;
            ??? struct LNode* prev;
            ??? int data;
            }*LinkList,LNode;


            class List
            {
            private:
            ??? LinkList HeadList;
            ??? int LengthList;
            public:
            ??? List();
            ??? List(const List& temp);
            ??? ~List();
            ??? int SearchLNode(int i);
            ??? bool InsertLNode(int i,int data_);
            ??? bool DeleteLNode(int i);
            ??? void ShowList();
            ??? int GetLengthList();
            ??? List& operator=(const List& temp);
            ??? List operator+(const List& temp);
            ??? List operator-(const List& temp);
            ??? List& operator+=(List& temp);
            ??? List& operator-=(const List& temp);
            ??? friend ostream& operator<<(ostream& out,List& temp);
            };

            #endif


            //? h9.cpp


            #include"h9.h"


            List::List()
            {
            ??? if(!(HeadList = new LNode))
            ??? {
            ??? ??? cout<<"distribute memory fail!\n";
            ??? ??? return;
            ??? }
            ??? HeadList->next = NULL;
            ??? HeadList->prev = NULL;
            ??? LengthList=0;
            }


            List::~List()
            {
            ??? LinkList temp = NULL;
            ??? while(HeadList->next != NULL)
            ??? {
            ??? ??? temp = HeadList->next;
            ??? ??? HeadList->next = temp->next;
            ??? ??? delete temp;
            ??? }
            ??? LengthList = 0;
            ??? delete HeadList;
            }


            List::List(const List& temp)
            {
            ??? LinkList newlist,lastlist,p;
            ??? p = temp.HeadList->next;
            ??? HeadList = new LNode;
            ??? lastlist = HeadList;
            ??? this->HeadList->next = NULL;
            ??? this->HeadList->prev = NULL;
            ??? this->LengthList = temp.LengthList;
            ??? while(p)
            ??? {
            ??? ??? newlist = new LNode;
            ??? ??? newlist->data = p->data;
            ??? ??? lastlist->next = newlist;
            ??? ??? newlist->prev = lastlist;
            ??? ??? newlist->next = NULL;
            ??? ??? lastlist = newlist;
            ??? ??? p = p->next;
            ??? }
            }


            bool List::InsertLNode(int i,int data_)
            {
            ??? LinkList p = HeadList->next,Pinsert;
            ??? int j = 1;
            ??? Pinsert = new LNode;
            ??? Pinsert->data = data_;
            ??? Pinsert->next = NULL;
            ??? Pinsert->prev = NULL;
            ??? if(i == 1)
            ??? {
            ??? ??? Pinsert->prev = HeadList;
            ??? ??? HeadList->next = Pinsert;
            ??? ??? LengthList = 1;
            ??? ??? return true;
            ??? }
            ??? else
            ??? {
            ??? ??? while(p != NULL&&j < i-1)??? ??? ??? ??? ??? //查詢第i-1行
            ??? ??? {
            ??? ??? ??? p = p->next;
            ??? ??? ??? j++;
            ??? ??? }
            ??? ??? if(p == NULL)
            ??? ??? {
            ??? ??? ??? cout<<"illegal operate!\n";???
            ??? ??? ??? return false;
            ??? ??? }
            ??? ??? Pinsert->next = p;
            ??? ??? p->prev->next = Pinsert;
            ??? ??? Pinsert->prev = p->prev;
            ??? ??? p->prev = Pinsert;
            ??? ??? LengthList++;
            ??? }
            ??? return true;
            }


            int List::SearchLNode(int i)
            {
            ??? int j = 1,temp;
            ??? LinkList p=HeadList->next;
            ??? while(p&&j < i)
            ??? {
            ??? ??? p = p->next;
            ??? ??? j++;
            ??? }
            ??? if(p == NULL || j > i)
            ??? {
            ??? ??? cout << "search fail\n";???
            ??? ??? return -1;
            ??? }
            ??? temp = p->data;
            ??? return temp;
            }




            bool List::DeleteLNode(int i)
            {
            ??? int j = 1;
            ??? LinkList p = HeadList->next;
            ??? while(p && j < i)??? ??? ??? ??? ???
            ??? {
            ??? ??? p = p->next;
            ??? ??? j++;
            ??? }
            ??? if(p == NULL||j > i)
            ??? {
            ??? ??? cout << "delete fail!\n";
            ??? ??? return false;
            ??? }
            ??? p->prev->next = p->next;
            ??? p->next->prev = p->prev;
            ??? delete p;
            ??? LengthList--;
            ??? return true;
            }


            void List::ShowList()
            {
            ??? LinkList p = HeadList->next;
            ??? cout<<"Now,this List is? ";
            ??? for(;p != NULL;p = p->next)
            ??? {
            ??? ??? cout << p->data<<"<==>";
            ??? }
            ??? cout << "NULL\n";
            }

            int List::GetLengthList()
            {
            ??? return LengthList;
            }


            List& List::operator=(const List& temp)
            {
            ??? LinkList newlist,lastlist,p;
            ??? p = temp.HeadList->next;
            ??? HeadList = new LNode;
            ??? lastlist = HeadList;
            ??? this->HeadList->next = NULL;
            ??? this->HeadList->prev = NULL;
            ??? this->LengthList = temp.LengthList;
            ??? while(p)
            ??? {
            ??? ??? newlist = new LNode;
            ??? ??? newlist->data = p->data;
            ??? ??? lastlist->next = newlist;
            ??? ??? newlist->prev = lastlist;
            ??? ??? newlist->next = NULL;
            ??? ??? lastlist = newlist;
            ??? ??? p = p->next;
            ??? }
            ??? return *this;
            }


            List List::operator+(const List& temp)
            {
            ??? List nowList,tempList(*this);
            ??? LinkList p = tempList.HeadList->next,q = temp.HeadList->next;
            ??? while(p->next != NULL)
            ??? {
            ??? ??? p = p->next;
            ??? }
            ??? p->next = q;
            ??? q->prev = p;
            ??? delete temp.HeadList;
            ??? nowList=tempList;
            ??? nowList.LengthList = tempList.LengthList + temp.LengthList;
            ??? return nowList;
            }


            List& List::operator-=(const List& temp)
            {
            ??? List t(temp);
            ??? LinkList p ,q = t.HeadList->next,r;
            ??? while(q != NULL)
            ??? {
            ??? ??? p = this->HeadList->next;
            ??? ??? while(p != NULL)
            ??? ??? {
            ??? ??? ??? if(p->data == q->data)
            ??? ??? ??? {
            ??? ??? ??? ??? r = p->prev;
            ??? ??? ??? ??? p->prev->next=p->next;
            ??? ??? ??? ??? p->next->prev=p->prev;
            ??? ??? ??? ??? delete p;
            ??? ??? ??? ??? this->LengthList--;
            ??? ??? ??? ??? p = r;
            ??? ??? ??? }
            ??? ??? ??? p = p->next;
            ??? ??? }
            ??? ??? q = q->next;
            ??? }
            ??? return *this;
            }


            List& List::operator+=(List& temp)
            {
            ??? LinkList p = this->HeadList->next,q = temp.HeadList->next;
            ??? while(p->next != NULL)
            ??? {
            ??? ??? p = p->next;
            ??? }
            ??? p->next = q;
            ??? q->prev = p;
            ??? delete temp.HeadList;
            ??? this->LengthList += temp.LengthList;
            ??? return *this;
            }


            List List::operator-(const List& temp)
            {
            ??? List t(temp),m(*this);
            ??? LinkList p,q = t.HeadList->next,r;
            ??? while(q != NULL)
            ??? {
            ??? ??? p = m.HeadList->next;
            ??? ??? while(p != NULL)
            ??? ??? {
            ??? ??? ??? if(p->data == q->data)
            ??? ??? ??? {
            ??? ??? ??? ??? r = p->prev;
            ??? ??? ??? ??? p->prev->next = p->next;
            ??? ??? ??? ??? p->next->prev = p->prev;
            ??? ??? ??? ??? delete p;
            ??? ??? ??? ??? m.LengthList--;
            ??? ??? ??? ??? p = r;
            ??? ??? ??? }
            ??? ??? ??? p = p->next;
            ??? ??? }
            ??? ??? q = q->next;
            ??? }
            ??? return m;
            }


            ostream& operator<<(ostream& out,List& temp)
            {
            ??? List t(temp);
            ??? out << "length of List:"<< t.GetLengthList() << endl;
            ??? out << "data of List:";
            ??? for(int i = 0;i < t.GetLengthList();i++)
            ??? {
            ??? ??? out << t.HeadList->next->data << "?? ";
            ??? ??? t.HeadList = t.HeadList->next;
            ??? }
            ??? out<<"\n";
            ??? return out;
            }


            // h9main.cpp??


            #include"h9.h"

            int main(void)
            {
            ?? List l,t,lt;
            ??? int temp;
            ??? l.InsertLNode(1,10);
            ??? l.InsertLNode(2,20);
            ?? l.InsertLNode(3,30);
            ?? l.InsertLNode(4,40);
            ??? l.ShowList();
            ??? t.InsertLNode(1,20);
            ??? t.InsertLNode(2,40);
            ?? t.InsertLNode(3,70);
            ?? t.InsertLNode(4,80);
            ?? t.ShowList();
            ??? l-=t;
            ??? l.ShowList();
            ?? cout<<l;??????
            ??? return 0;
            }

            posted on 2007-03-21 19:56 honker 閱讀(467) 評論(0)  編輯 收藏 引用

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            常用鏈接

            留言簿(3)

            隨筆分類(10)

            隨筆檔案(14)

            相冊

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            国产精品欧美亚洲韩国日本久久 | 国产精品日韩欧美久久综合| 久久亚洲AV成人无码国产| 国内精品伊人久久久久777| 久久婷婷五月综合色奶水99啪| 久久久一本精品99久久精品88| 国产精品欧美久久久久无广告| 久久中文字幕精品| 精品久久久久久久| 狠狠色丁香久久婷婷综合_中| 久久久av波多野一区二区| 久久99热这里只有精品国产| 久久WWW免费人成一看片| 国产精品成人99久久久久 | 中文精品99久久国产| 久久婷婷五月综合97色一本一本| 99久久国产主播综合精品 | 亚洲一区精品伊人久久伊人| 久久99精品久久久久久动态图| 久久久久亚洲爆乳少妇无| 99国产欧美久久久精品蜜芽| 欧美性猛交xxxx免费看久久久| 国产91色综合久久免费| 欧美国产成人久久精品| 精品无码久久久久久国产| 97久久精品无码一区二区| 久久99精品国产麻豆宅宅| 武侠古典久久婷婷狼人伊人| 国产午夜精品久久久久九九电影| 久久综合综合久久综合| 77777亚洲午夜久久多人| 一级做a爰片久久毛片免费陪| 99久久精品国产综合一区| 2021久久国自产拍精品| 亚洲中文字幕无码久久2017| 久久久久久国产a免费观看黄色大片| 久久se精品一区精品二区| 久久777国产线看观看精品| 成人久久久观看免费毛片| 精品国产VA久久久久久久冰 | 国产精品久久久久影院色|