• <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色婷婷色| 久久性精品| 亚洲国产精品无码久久98| 久久99精品国产自在现线小黄鸭 | 少妇久久久久久被弄高潮| 99久久免费国产特黄| 婷婷久久五月天| 色偷偷888欧美精品久久久| 亚洲人成无码久久电影网站| 国产婷婷成人久久Av免费高清| 久久久99精品一区二区| 久久亚洲中文字幕精品有坂深雪| 久久人妻少妇嫩草AV无码蜜桃| 久久99精品国产麻豆| 久久精品极品盛宴观看| 国产成人久久久精品二区三区| 久久人人爽人人人人爽AV| 激情久久久久久久久久| 77777亚洲午夜久久多喷| 97久久国产综合精品女不卡| 久久强奷乱码老熟女| 91精品久久久久久无码| 99久久99这里只有免费费精品| 区亚洲欧美一级久久精品亚洲精品成人网久久久久| A级毛片无码久久精品免费 | 国产aⅴ激情无码久久| 久久久久久久久久久免费精品| A狠狠久久蜜臀婷色中文网| 无码人妻精品一区二区三区久久久 | 亚洲AⅤ优女AV综合久久久| a级毛片无码兔费真人久久| 99国产精品久久| 99精品久久精品| 久久亚洲综合色一区二区三区| 久久99精品国产麻豆| 国内精品久久九九国产精品| 久久久久人妻精品一区二区三区| 亚洲AV无码久久精品成人| 欧美喷潮久久久XXXXx|