1.C++ 1.類與對象C++鏈表類的封裝
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)廣靈免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
對象:對象是我們生活中事物,有一定的屬性和行為或者操作方式。
面向?qū)ο螅菏且环N軟件的開發(fā)方法,對象所指的是計(jì)算機(jī)操作系統(tǒng)中的某一個(gè)成分。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,對象包含兩個(gè)含義,其中一個(gè)是數(shù)據(jù),另外一個(gè)是行為。
面向?qū)ο缶幊蹋篊++是一種面向?qū)ο蟮恼Z言,作為C語言的升級和擴(kuò)充,C++完善了C語言中的不足,同時(shí)也在不斷進(jìn)行更新。面向?qū)ο缶幊痰闹饕木€是把問題的各個(gè)部分分解成對象。面向?qū)ο蟪绦蛟O(shè)計(jì)中的概念主要包括:對象,類,數(shù)據(jù)抽象、繼承、動態(tài)綁定、數(shù)據(jù)封裝、多態(tài)性、消息傳遞。
class 類名:繼承方式 基類,…{
訪問控制限定符:
類名(形參表):初始化列表{…}//構(gòu)造函數(shù)
~類名(void){…}//析構(gòu)函數(shù)
返回類型 函數(shù)名(形參表){…}//成員函數(shù)
數(shù)據(jù)類型 變量名;//成員變量
};
1.public:公共的行為或?qū)傩裕魏挝恢枚伎梢栽L問使用
2.private:私有的行為或?qū)傩?,只有類自己的成員函數(shù)才能訪問,類的外部是不可以訪問的,不寫訪問控制限定符,默認(rèn)是私有成員
3.protected:受保護(hù)的成員,在派生類可訪問
2.3構(gòu)造函數(shù)語法
class 類名{
類名(形參表){//負(fù)責(zé)初始化對象(初始化成員變量)}
};
函數(shù)名字與類名相同,且無返回類型
構(gòu)造函數(shù)在創(chuàng)建時(shí)自動被調(diào)用,不能像普通成員函數(shù)一樣顯式的調(diào)用
2.4對象的創(chuàng)建和銷毀1.在棧區(qū)創(chuàng)建單個(gè)對象:
類名 對象(構(gòu)造實(shí)參表);//無實(shí)參的話不需要加括號
如果只有一個(gè)構(gòu)造實(shí)參也可以:類名 對象=構(gòu)造實(shí)參;
類名 對象=類名(構(gòu)造實(shí)參表);//拷貝初始化
2.在棧區(qū)創(chuàng)建多個(gè)對象(對象數(shù)組)
類名 對象數(shù)組[元素個(gè)數(shù)]={類名(構(gòu)造實(shí)參表),...};
3.在堆區(qū)創(chuàng)建、銷毀單個(gè)對象
創(chuàng)建:類名*對象指針=new 類名(構(gòu)造實(shí)參表)
銷毀:delete 對象指針
4.在堆區(qū)創(chuàng)建、銷毀對象數(shù)組
創(chuàng)建:類名*對象指針=new類名[元素個(gè)數(shù)】{類名(構(gòu)造實(shí)參表)}
銷毀:delete[] 對象指針;
2.鏈表
1.定義鏈表是一種物理存儲上非連續(xù),數(shù)據(jù)元素的邏輯順序通過鏈表中的指針鏈接次序,實(shí)現(xiàn)的一種線性存儲結(jié)構(gòu)。
2.特點(diǎn)鏈表由一系列節(jié)點(diǎn)(鏈表中每一個(gè)元素稱為節(jié)點(diǎn))組成,節(jié)點(diǎn)在運(yùn)行時(shí)動態(tài)生成 (malloc),每個(gè)節(jié)點(diǎn)包括兩個(gè)部分: 一個(gè)是存儲數(shù)據(jù)元素的數(shù)據(jù)域,另一個(gè)是存儲下一個(gè)節(jié)點(diǎn)地址的指針域
3.構(gòu)成鏈表節(jié)點(diǎn)分為兩個(gè)域
數(shù)據(jù)域:存放各種實(shí)際的數(shù)據(jù),如:num、score等
指針域:存放下一節(jié)點(diǎn)的首地址,如:next等.
4.操作基本操作包括增加,刪除,修改,查詢。
3.實(shí)現(xiàn)
1.創(chuàng)建(頭插法)void LinkList::HeadPushList(int x)
{
if (data == 0)
{
LinkList* p = new LinkList(x);
next = p;
data++;
}
else
{
LinkList* p = new LinkList(x);
p->next = next;
next = p;
data++;
}
}
2.插入void LinkList::RandInsertList(int n, int x)
{
if (n == 1)
{
HeadPushList(x);
}
else if (n >1 && n<= data)
{
LinkList* p = new LinkList(x);
LinkList* temp = next;
int count = n - 2;
while (count--)
{
temp = temp->next;
}
p->next = temp->next;
temp->next = p;
data++;
}
}
3.刪除int LinkList::RandDeleteList(int n)
{
int x;
if (data == 0)
return NULL;
if (n == 1)
{
x = HeadPopList();
}
else if (n == data)
{
x = TailPopList();
}
else if (n >1 && n< data)
{
int cnt = n - 2;
LinkList* p = next;
while (cnt--)
p = p->next;
LinkList* p1 = p->next;
x = p1->data;
p->next = p1->next;
delete p1;
data--;
}
else
{
cout<< "刪除位置錯(cuò)誤!";
return NULL;
}
cout<< "刪除成功!"<< endl;
return x;
}
4.查詢int LinkList::DataSearchList(int n)
{
if (EmptyList() || (!(n >0 && n<= data)))
return false;
LinkList* p = next;
int index = n - 1;
while (index--)
p = p->next;
return p->data;
5.修改bool LinkList::LocateChangeList(int n, int x)
{
if (EmptyList()||(!(n >0 && n<= data)))
return false;
int index = n - 1;
LinkList* p = next;
while (index--)
p = p->next;
p->data = x;
return true;
}
4.總結(jié)C++中的鏈表操作方式跟C一樣,但是在C++中更習(xí)慣將數(shù)據(jù)結(jié)構(gòu)封裝成類進(jìn)行操作,通過成員函數(shù)對類里面的成員進(jìn)行訪問和操作。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧