• <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++課程設(shè)計(jì),我鏈表類,編完之后感覺(jué)對(duì)鏈表有了更深刻的認(rèn)識(shí)

            //? 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 閱讀(466) 評(píng)論(0)  編輯 收藏 引用


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


            <2007年3月>
            25262728123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            導(dǎo)航

            常用鏈接

            留言簿(3)

            隨筆分類(10)

            隨筆檔案(14)

            相冊(cè)

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            中文字幕一区二区三区久久网站 | 久久久黄色大片| 亚洲v国产v天堂a无码久久| 久久国产精品无| 久久精品99久久香蕉国产色戒| 久久精品中文无码资源站| 国产A级毛片久久久精品毛片| 婷婷久久综合九色综合九七| 伊人久久大香线蕉亚洲| 91精品久久久久久无码| 亚洲AV无码久久精品色欲| 国产精品亚洲美女久久久| 97精品国产97久久久久久免费 | 日韩人妻无码精品久久免费一| 7777久久久国产精品消防器材| 国产精品久久自在自线观看| 色偷偷91久久综合噜噜噜噜| 国产一区二区精品久久| 久久91精品国产91久| 99久久精品免费看国产一区二区三区| 97精品伊人久久大香线蕉| 国产精品伦理久久久久久| 久久w5ww成w人免费| 手机看片久久高清国产日韩| 99久久久精品免费观看国产| 久久福利资源国产精品999| 亚洲国产精品久久久久婷婷老年| 亚洲国产美女精品久久久久∴| 久久久久免费视频| 国内精品伊人久久久久网站| 高清免费久久午夜精品| 久久天天躁狠狠躁夜夜96流白浆| 久久久久久久精品妇女99| 一级做a爰片久久毛片毛片| 精品乱码久久久久久夜夜嗨| 久久婷婷久久一区二区三区| 国产精品久久精品| 久久香蕉国产线看观看乱码| 久久精品成人免费网站| 久久91精品久久91综合| 国产91色综合久久免费分享|