關(guān)于數(shù)據(jù)結(jié)構(gòu)-創(chuàng)新互聯(lián)

#include

創(chuàng)新互聯(lián)主營(yíng)懷化網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App制作,懷化h5微信小程序定制開發(fā)搭建,懷化網(wǎng)站營(yíng)銷推廣歡迎懷化等地區(qū)企業(yè)咨詢

#define?TRUE 1

#define?FALSE 0

#define?OK 1

#define?ERROR 0

#define?MAXSIZE 20

#define?LT(a,b)((a)<(b))

#define?EQ(a,b)((a)==(b))

typedef?int?Status;

typedef?int?KeyType;

typedef?int?InfoType;

typedef?struct{

KeyType key;

InfoType otherinfo;

}RedType;

typedef?struct{

RedType r[MAXSIZE+1];

int?length;

}SqList;

Status InitList(SqList &L){

L.length=0;

return?OK;

}

Status CreateList(SqList &L,int?n){

int?i;

printf("輸入%d個(gè)元素:\n",n);

for(i=1;i<=n;i++){

scanf("%d",&L.r[i].key);

++L.length;

}

if(L.length==0) return?ERROR;

return?OK;

}

Status DispList(SqList &L){

int?i;

if(L.length==0) ?return?ERROR;

for(i=1;i<=L.length;i++){

printf("%d",L.r[i].key);

}

printf("\n");

return?OK;

}

void?InsertSort(SqList &L){

int?i;

int?j;

for(i=2;i<=L.length;++i){

if(LT(L.r[i].key,L.r[i-1].key)){

L.r[0]=L.r[i];

L.r[i]=L.r[i-1];

for(j=i-2;LT(L.r[0].key,L.r[j].key);--j)

L.r[j+1]=L.r[j];

L.r[j+1]=L.r[0];

}

}

}

int?main(){

SqList L;

int?n;

printf("初始化順序表,");

InitList(L);

if(L.length==0)

printf("順序表為空!\n");

printf("輸入順序表的元素個(gè)數(shù):");

scanf("%d",&n);

CreateList(L,n);

printf("輸出元素的順序表如下:\n");

DispList(L);

InsertSort(L);

printf("直接插入排序結(jié)果如下:\n");

DispList(L);

return?0;

}

數(shù)據(jù)結(jié)構(gòu)(data structure)是帶有結(jié)構(gòu)特性的數(shù)據(jù)元素的集合,它研究的是數(shù)據(jù)的邏輯結(jié)構(gòu)和數(shù)據(jù)的物理結(jié)構(gòu)以及它們之間的相互關(guān)系,并對(duì)這種結(jié)構(gòu)定義相適應(yīng)的運(yùn)算,設(shè)計(jì)出相應(yīng)的算法,并確保經(jīng)過(guò)這些運(yùn)算以后所得到的新結(jié)構(gòu)仍保持原來(lái)的結(jié)構(gòu)類型。簡(jiǎn)而言之,數(shù)據(jù)結(jié)構(gòu)是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合,即帶“結(jié)構(gòu)”的數(shù)據(jù)元素的集合?!敖Y(jié)構(gòu)”就是指數(shù)據(jù)元素之間存在的關(guān)系,分為邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)。?[2]?

數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)的兩個(gè)密切相關(guān)的方面,同一邏輯結(jié)構(gòu)可以對(duì)應(yīng)不同的存儲(chǔ)結(jié)構(gòu)。算法的設(shè)計(jì)取決于數(shù)據(jù)的邏輯結(jié)構(gòu),而算法的實(shí)現(xiàn)依賴于指定的存儲(chǔ)結(jié)構(gòu)。?[2]?

數(shù)據(jù)結(jié)構(gòu)的研究?jī)?nèi)容是構(gòu)造復(fù)雜軟件系統(tǒng)的基礎(chǔ),它的核心技術(shù)是分解與抽象。通過(guò)分解可以劃分出數(shù)據(jù)的3個(gè)層次;再通過(guò)抽象,舍棄數(shù)據(jù)元素的具體內(nèi)容,就得到邏輯結(jié)構(gòu)。類似地,通過(guò)分解將處理要求劃分成各種功能,再通過(guò)抽象舍棄實(shí)現(xiàn)細(xì)節(jié),就得到運(yùn)算的定義。上述兩個(gè)方面的結(jié)合可以將問(wèn)題變換為數(shù)據(jù)結(jié)構(gòu)。這是一個(gè)從具體(即具體問(wèn)題)到抽象(即數(shù)據(jù)結(jié)構(gòu))的過(guò)程。然后,通過(guò)增加對(duì)實(shí)現(xiàn)細(xì)節(jié)的考慮進(jìn)一步得到存儲(chǔ)結(jié)構(gòu)和實(shí)現(xiàn)運(yùn)算,從而完成設(shè)計(jì)任務(wù)。這是一個(gè)從抽象(即數(shù)據(jù)結(jié)構(gòu))到具體(即具體實(shí)現(xiàn))的過(guò)程。?[3]?

研究對(duì)象

編輯?播報(bào)

數(shù)據(jù)邏輯結(jié)構(gòu)

指反映數(shù)據(jù)元素之間的邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu),其中的邏輯關(guān)系是指數(shù)據(jù)元素之間的前后間關(guān)系,而與他們?cè)谟?jì)算機(jī)中的存儲(chǔ)位置無(wú)關(guān)。邏輯結(jié)構(gòu)包括:?[1]?

1.集合:數(shù)據(jù)結(jié)構(gòu)中的元素之間除了“同屬一個(gè)集合” 的相互關(guān)系外,別無(wú)其他關(guān)系;?[1]?

2.線性結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu)中的元素存在一對(duì)一的相互關(guān)系;?[1]?

3.樹形結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu)中的元素存在一對(duì)多的相互關(guān)系;?[1]?

4.圖形結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu)中的元素存在多對(duì)多的相互關(guān)系。?[1]?

數(shù)據(jù)物理結(jié)構(gòu)

數(shù)據(jù)的物理結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)中的表示(又稱映像),它包括數(shù)據(jù)元素的機(jī)內(nèi)表示和關(guān)系的機(jī)內(nèi)表示。由于具體實(shí)現(xiàn)的方法有順序、鏈接、索引、散列等多種,所以,一種數(shù)據(jù)結(jié)構(gòu)可表示成一種或多種存儲(chǔ)結(jié)構(gòu)。?[1]?

數(shù)據(jù)元素的機(jī)內(nèi)表示(映像方法): 用二進(jìn)制位(bit)的位串表示數(shù)據(jù)元素。通常稱這種位串為節(jié)點(diǎn)(node)。當(dāng)數(shù)據(jù)元素有若干個(gè)數(shù)據(jù)項(xiàng)組成時(shí),位串中與各個(gè)數(shù)據(jù)項(xiàng)對(duì)應(yīng)的子位串稱為數(shù)據(jù)域(data field)。因此,節(jié)點(diǎn)是數(shù)據(jù)元素的機(jī)內(nèi)表示(或機(jī)內(nèi)映像)。?[1]?

關(guān)系的機(jī)內(nèi)表示(映像方法):數(shù)據(jù)元素之間的關(guān)系的機(jī)內(nèi)表示可以分為順序映像和非順序映像,常用兩種存儲(chǔ)結(jié)構(gòu):順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。順序映像借助元素在存儲(chǔ)器中的相對(duì)位置來(lái)表示數(shù)據(jù)元素之間的邏輯關(guān)系。非順序映像借助指示元素存儲(chǔ)位置的指針(pointer)來(lái)表示數(shù)據(jù)元素之間的邏輯關(guān)系。?[1]?

數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)

數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)空間中的存放形式稱為數(shù)據(jù)的物理結(jié)構(gòu)(也稱為存儲(chǔ)結(jié)構(gòu))。一般來(lái)說(shuō),一種數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲(chǔ)結(jié)構(gòu),常用的存儲(chǔ)結(jié)構(gòu)有順序存儲(chǔ)、鏈?zhǔn)酱鎯?chǔ)、索引存儲(chǔ)和哈希存儲(chǔ)等。?[4]?

數(shù)據(jù)的順序存儲(chǔ)結(jié)構(gòu)的特點(diǎn)是:借助元素在存儲(chǔ)器中的相對(duì)位置來(lái)表示數(shù)據(jù)元素之間的邏輯關(guān)系;非順序存儲(chǔ)的特點(diǎn)是:借助指示元素存儲(chǔ)地址的指針表示數(shù)據(jù)元素之間的邏輯關(guān)系。?[4]?

分類

編輯?播報(bào)

數(shù)據(jù)結(jié)構(gòu)有很多種,一般來(lái)說(shuō),按照數(shù)據(jù)的邏輯結(jié)構(gòu)對(duì)其進(jìn)行簡(jiǎn)單的分類,包括線性結(jié)構(gòu)和非線性結(jié)構(gòu)兩類。?[5]?

線性結(jié)構(gòu)

簡(jiǎn)單地說(shuō),線性結(jié)構(gòu)就是表中各個(gè)結(jié)點(diǎn)具有線性關(guān)系。如果從數(shù)據(jù)結(jié)構(gòu)的語(yǔ)言來(lái)描述,線性結(jié)構(gòu)應(yīng)該包括如下幾點(diǎn):?[5]?

1、線性結(jié)構(gòu)是非空集。?[5]?

2、線性結(jié)構(gòu)有且僅有一個(gè)開始結(jié)點(diǎn)和一個(gè)終端結(jié)點(diǎn)。?[5]?

3、線性結(jié)構(gòu)所有結(jié)點(diǎn)都最多只有一個(gè)直接前驅(qū)結(jié)點(diǎn)和一個(gè)直接后繼結(jié)點(diǎn)。?[5]?

線性表就是典型的線性結(jié)構(gòu),還有棧、隊(duì)列和串等都屬于線性結(jié)構(gòu)。?[5]?

非線性結(jié)構(gòu)

簡(jiǎn)單地說(shuō),非線性結(jié)構(gòu)就是表中各個(gè)結(jié)點(diǎn)之間具有多個(gè)對(duì)應(yīng)關(guān)系。如果從數(shù)據(jù)結(jié)構(gòu)的語(yǔ)言來(lái)描述,非線性結(jié)構(gòu)應(yīng)該包括如下幾點(diǎn):?[5]?

1、非線性結(jié)構(gòu)是非空集。?[5]?

2、非線性結(jié)構(gòu)的一個(gè)結(jié)點(diǎn)可能有多個(gè)直接前驅(qū)結(jié)點(diǎn)和多個(gè)直接后繼結(jié)點(diǎn)。?[5]?

在實(shí)際應(yīng)用中,數(shù)組、廣義表、樹結(jié)構(gòu)和圖結(jié)構(gòu)等數(shù)據(jù)結(jié)構(gòu)都屬于非線性結(jié)構(gòu)。?[5]

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站標(biāo)題:關(guān)于數(shù)據(jù)結(jié)構(gòu)-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://muchs.cn/article18/cddedp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站用戶體驗(yàn)、域名注冊(cè)App開發(fā)、云服務(wù)器、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作