亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++教程:鏈表類

2020-05-23 14:25:51
字體:
來源:轉載
供稿:網友
鏈表結點類編寫好了,我們可以向鏈表類進軍了。鏈表是由一個個鏈表結點組成的,所以我們會在鏈表類中使用到鏈表結點類。鏈表結點類是一個很簡單的類,鏈表類是一個功能更為強大的類。正是將一個個類不斷地組合與擴充,使得面向對象的程序功能越來越強大。

讓我們感興趣的是,假設我們編寫的鏈表需要有一個頭結點作為成員數據,那么是先有鏈表呢,還是先有頭結點?我們又該如何在給鏈表作初始化的同時初始化頭結點呢?

當一個對象中包含別的對象時,我們可以在它的構造函數定義中用以下格式調用其成員對象的構造函數:
    類名::構造函數名(參數表):成員對象名1(參數表)[,……成員對象名n(參數表)]
前一段和普通的構造函數一樣,冒號之后則表示該類中的成員對象怎樣調用各自的構造函數。

下面我們來看一個簡單的面向對象的鏈表程序:(程序15.3)
//node.h同程序15.2.2
//linklist.h
#include "node.h"//需要使用鏈表結點類
#include <iostream>
using namespace std;
class Linklist
{
   public:
   Linklist(int i,char c);//鏈表類構造函數
   bool Locate(int i);//根據整數查找結點
   bool Locate(char c);//根據字符查找結點
   bool Insert(int i=0,char c='0');//在當前結點之后插入結點
   bool Delete();//刪除當前結點
   void Show();//顯示鏈表所有數據
   void Destroy();//清除整個鏈表
   private:
   Node head;//頭結點
   Node * pcurrent;//當前結點指針
};
Linklist::Linklist(int i,char c):head(i,c)//類名::構造函數名(參數表):成員對象名1(參數表),鏈表類構造函數,調用head對象的構造函數重載1,詳見Node.h文件
{
   cout<<"Linklist constructor is running..."<<endl;
   pcurrent=&head;
}
bool Linklist::Locate(int i)
{
   Node * ptemp=&head;
   while(ptemp!=NULL)
   {
      if(ptemp->readi()==i)
      {
         pcurrent=ptemp;//將當前結點指針指向找到的結點
         return true;
      }
      ptemp=ptemp->readn();//查找下一個結點
   }
   return false;
}
bool Linklist::Locate(char c)
{
   Node * ptemp=&head;
   while(ptemp!=NULL)
   {
      if(ptemp->readc()==c)
      {
         pcurrent=ptemp;
         return true;
      }
      ptemp=ptemp->readn();
   }
   return false;
}
bool Linklist::Insert(int i,char c)
{
   if(pcurrent!=NULL)
   {
      Node * temp=new Node(i,c,pcurrent,pcurrent->readn());//調用Node類構造函數重載2
      if (pcurrent->readn()!=NULL)
      {
         pcurrent->readn()->setp(temp);
      }
      pcurrent->setn(temp);
      return true;
   }
   else
   {
      return false;
    }
}
bool Linklist::Delete()
{
   if(pcurrent!=NULL && pcurrent!=&head)//head結點不能刪除
   {
      Node * temp=pcurrent;
      if (temp->readn()!=NULL)
      {
         temp->readn()->setp(pcurrent->readp());
      }
      temp->readp()->setn(pcurrent->readn());//先連
      pcurrent=temp->readp();
      delete temp;//后斷
      return true;
   }
   else
   {
      return false;
   }
}
void Linklist::Show()
{
   Node * ptemp=&head;
   while (ptemp!=NULL)//鏈表的遍歷
   {
      cout <<ptemp->readi() <<'/t' <<ptemp->readc() <<endl;
      ptemp=ptemp->readn();
   }
}
void Linklist::Destroy()
{
   Node * ptemp1=head.readn();
   while (ptemp1!=NULL)
   {
      Node * ptemp2=ptemp1->readn();
      delete ptemp1;
      ptemp1=ptemp2;
   }
   head.setn(NULL);//頭結點之后沒有其他結點
}
//main.cpp
#include "Linklist.h"
#include <iostream>
using namespace std;
int main()
{
   int tempi;
   char tempc;
   cout <<"請輸入一個整數和一個字符:" <<endl;
   cin >>tempi >>tempc;
   Linklist a(tempi,tempc);//創建一個鏈表,頭結點數據由tempi和tempc確定
   a.Locate(tempi);
   a.Insert(1,'C'); 
   a.Insert(2,'B');
   a.Insert(3,'F');
   cout <<"After Insert" <<endl;
   a.Show();
   a.Locate('B');
   a.Delete();
   cout <<"After Delete" <<endl;
   a.Show();
   a.Destroy();
   cout <<"After Destroy" <<endl;
   a.Show();
   return 0;
}

運行結果:
請輸入一個整數和一個字符:
4 G
Node constructor is running...
Linklist constructor is running...
Node constructor is running...
Node constructor is running...
Node constructor is running...
After Insert
4 G
3 F
2 B
1 C
After Delete
4 G
3 F
1 C
After Destroy
4 G
根據程序的運行結果,我們發現頭結點的構造函數比鏈表的構造函數優先運行。這也不難理解:構造函數的目的是要初始化成員數據,初始化成員數據的時候這個成員數據是必須存在的。所以當一個成員數據是一個對象的時候,應當先產生這個成員對象,于是就先調用了成員對象的構造函數。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色噜噜狠狠狠综合曰曰曰| 九九视频直播综合网| 亚洲精品在线观看www| 中文字幕亚洲无线码a| 中文字幕自拍vr一区二区三区| 午夜精品久久久久久久久久久久| 国产在线999| 国产精品91久久久| 亚洲japanese制服美女| 中文字幕亚洲欧美一区二区三区| 国产精品亚洲аv天堂网| 成人av在线网址| 亚洲xxxx18| 亚洲第一精品久久忘忧草社区| 欧美性生交xxxxx久久久| 久久久精品一区| 欧美激情视频网站| 日韩精品在线观看视频| 不卡伊人av在线播放| 欧美精品videossex性护士| 91人成网站www| 欧美成人精品在线视频| 热久久这里只有精品| 国产91亚洲精品| 国产69精品久久久久9| 久久免费少妇高潮久久精品99| 日韩国产欧美区| 国产精品稀缺呦系列在线| 欧美做受高潮电影o| 久久久国产一区二区三区| 国产精品一区=区| 精品美女久久久久久免费| 91沈先生作品| 97香蕉超级碰碰久久免费软件| 国产精品久久久久久久久久尿| 日韩国产在线播放| 亚洲欧洲黄色网| 欧美午夜片欧美片在线观看| 国产免费一区二区三区香蕉精| 欧美午夜精品伦理| 亚洲成人av片| 国产午夜精品麻豆| 日日噜噜噜夜夜爽亚洲精品| 久久久人成影片一区二区三区| 日韩福利视频在线观看| 欧美日韩一区二区免费在线观看| 国产亚洲精品va在线观看| 全亚洲最色的网站在线观看| 欧美成人性色生活仑片| 亚洲男人av电影| 国产精品久久久久国产a级| 国产精品第8页| 久久久久久久久久久免费| 国产91露脸中文字幕在线| 日韩欧美主播在线| 亚洲国产成人一区| 美女视频黄免费的亚洲男人天堂| 日韩大片免费观看视频播放| 一本一道久久a久久精品逆3p| 日本一本a高清免费不卡| 欧美性色视频在线| 色噜噜国产精品视频一区二区| 亚洲美女精品久久| 国产欧美精品xxxx另类| 久久视频免费在线播放| 国语自产精品视频在线看一大j8| 亚洲aⅴ男人的天堂在线观看| 欧美主播福利视频| 国产一区二区免费| 日日狠狠久久偷偷四色综合免费| 国产日韩精品在线播放| 欧美另类第一页| 中文日韩在线观看| 久久99亚洲热视| 欧美日韩精品国产| 欧美视频在线观看免费| 久久的精品视频| 欧美肥老太性生活视频| 欧美精品制服第一页| 最近2019中文免费高清视频观看www99| 国语自产精品视频在免费| 国产精品免费一区| 欧美成人午夜剧场免费观看| 国产剧情久久久久久| 91精品久久久久久久久久入口| 欧美区在线播放| 92版电视剧仙鹤神针在线观看| 国产日韩欧美在线观看| 亚洲精品欧美日韩专区| 欧美精品成人91久久久久久久| 国产自产女人91一区在线观看| 国产自产女人91一区在线观看| 91人成网站www| 色综合久久88色综合天天看泰| 日韩国产一区三区| 91高潮精品免费porn| 91高清视频在线免费观看| 色妞欧美日韩在线| 国产精品精品久久久久久| 国产亚洲精品久久久久久777| 色噜噜久久综合伊人一本| 91国产精品视频在线| 亚洲精品欧美日韩| 红桃av永久久久| 一区二区三区国产视频| 一本一道久久a久久精品逆3p| 国产日韩欧美在线播放| 亚洲精品综合久久中文字幕| 精品视频—区二区三区免费| 国产精品第3页| 国产精品草莓在线免费观看| 亚洲精品一区二区三区不| 欧美成人第一页| 日韩电影中文字幕一区| 欧美乱大交xxxxx| 日韩中文字幕第一页| 91久久国产精品91久久性色| 日韩毛片中文字幕| 欧美激情免费观看| 国产精品丝袜久久久久久不卡| 久久视频免费在线播放| 欧美性生活大片免费观看网址| 国内外成人免费激情在线视频| 亚洲视频777| 国产精品三级网站| 久久99久久99精品免观看粉嫩| 欧亚精品中文字幕| 久久久久免费精品国产| 欧美在线视频在线播放完整版免费观看| 欧美视频在线视频| 欧美主播福利视频| 2019日本中文字幕| 国产欧美久久久久久| 日韩网站免费观看高清| 日韩av理论片| 欧美又大粗又爽又黄大片视频| 成人免费xxxxx在线观看| 日韩欧美一区二区三区久久| 国产精品aaaa| 一区二区三区视频观看| 亲子乱一区二区三区电影| 亚洲欧美国产一本综合首页| 在线观看免费高清视频97| 成人黄色中文字幕| 久久精品国产欧美激情| 久久久国产影院| 国产v综合v亚洲欧美久久| 国产乱人伦真实精品视频| 97在线视频免费观看| 国产精品一二区| 亚洲午夜久久久久久久| 日韩美女av在线| 欧美精品激情blacked18| 国产欧美精品一区二区三区介绍| 国产不卡av在线免费观看| 欧美在线视频在线播放完整版免费观看| 色小说视频一区| 国产视频久久久久久久| 亚洲日本中文字幕免费在线不卡| 亚洲欧美激情另类校园| 亚洲欧洲高清在线| 国产精品亚发布| 久久好看免费视频| 久久久久久久av|