其他線性數(shù)據(jù)結構_第1頁
其他線性數(shù)據(jù)結構_第2頁
其他線性數(shù)據(jù)結構_第3頁
其他線性數(shù)據(jù)結構_第4頁
其他線性數(shù)據(jù)結構_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

其他線性數(shù)據(jù)結構第一頁,共五十頁,2022年,8月28日本章要點串、多維數(shù)組、特殊矩陣及稀疏矩陣的定義串、多維數(shù)組、特殊矩陣及稀疏矩陣的存儲方式串、稀疏矩陣的基本操作第二頁,共五十頁,2022年,8月28日本章難點多維數(shù)組的順序存儲特殊矩陣的壓縮存儲稀疏矩陣的基本操作學習目標掌握串操作掌握多維數(shù)組的順序存儲掌握特殊矩陣的壓縮存儲掌握稀疏矩陣的基本操作第三頁,共五十頁,2022年,8月28日4.1串串是一種特殊的線性結構,它的數(shù)據(jù)元素僅由字符組成。第四頁,共五十頁,2022年,8月28日4.1.1串的定義和基本操作1.串的相關概念串(String)

串是由零個或多個字符組成的有限序列。一般記為S=“a1a2

…an”

(n≥0)。其中,S是串名,用單引號或雙引號括起來的字符序列是串的值,ai(1≤i≤n)可以是字母、數(shù)字或其他字符。值得注意的是,引號本身不屬于串。串的長度

串中字符的數(shù)目n??沾?/p>

長度為0的串??崭翊?/p>

由一個或多個空格組成的串。需要注意的是,空格串不是空串,空格串的長度由其中空格的數(shù)目決定,而空串的長度為0。第五頁,共五十頁,2022年,8月28日4.1.1串的定義和基本操作串的子串、主串串中任意個連續(xù)的字符組成的子序列稱為該串的子串,包含子串的串相應地稱為主串??沾侨我獯淖哟我獯瞧渥陨淼淖哟?。字符在串中的位置

字符在序列中的序號。子串在主串中的位置

以子串的第一個字符在主串中的位置來表示。兩串相等當兩個串的長度相等,并且各個對應位置上的字符都相等時,稱這兩個串相等。例如上例中的C、D看起來相似,但不相等。

第六頁,共五十頁,2022年,8月28日4.1.1串的定義和基本操作2.串的基本操作

(1)=賦值操作賦值號左邊必須是串變量,右邊可以是串變量、串常量或運算值是串值的表達式。(2判兩串是否相等的函數(shù)。若S和T相等,則返回函數(shù)值“true”或1;否則返回函數(shù)值“false”或0。S和T可以是空串,也可以是非空串。(3)求串的長度的函數(shù)。函數(shù)值為串S中字符的個數(shù)。(4)聯(lián)接操作。設S,T1,T2都是串變量,聯(lián)接操作就是將串T1和串T2放入S中。S串中的前一段和串T1相等,S串中的后一段和串T2相等。CONCAT(S,T1,T2)與CONCAT(S,T2,T1)的結果不一樣。聯(lián)接操作還可推廣至n個串變量。(5)SUBSTR(S,i,j)求子串函數(shù)。當1≤i≤STRLEN(S)且0≤j≤STRLEN(S)-i+1,返回函數(shù)值是S的一個子串,即從串S中第i個字符起,長度為j的字符序列。否則返回一個特殊的值。(6)INDEX(S,T)定位函數(shù)。若在主串S中存在和T相等的子串,則函數(shù)值返回在S中出現(xiàn)的第一個和T相等的子串在S中的位置,否則函數(shù)值為零。注意T不能是空串。第七頁,共五十頁,2022年,8月28日4.1.1串的定義和基本操作(7)置換操作。操作結果是以串V替換所有在串S中出現(xiàn)的和串T相等的不重疊的子串。(8)插入操作。當1≤pos≤STRLEN(S)+1時,在串S的第pos個字符之前插入串T。(9)刪除操作。當1≤pos≤STRLEN(S)且0≤len≤STRLEN(S)-pos+1時,從串S中刪去第pos字符起、長度為len的子串。(10)串復制(11)輸出串第八頁,共五十頁,2022年,8月28日1、串賦值運算voidAssign(SqString&s,chart[]) { inti=0; while(t[i]!='\0') {s.ch[i]=t[i];i++; } s.len=i;}2、串復制運算voidStrCopy(SqString&s,SqStringt) { inti; for(i=0;i<t.len;i++) s.ch[i]=t.ch[i]; s.len=t.len;}第九頁,共五十頁,2022年,8月28日3、求串長運算intStrLength(SqStrings) { return(s.len);}4、判斷串相等運算intStrEqual(SqStrings,SqStringt) { inti=0; if(s.len!=t.len) /*串長不同時返回0*/ return(0); else {for(i=0;i<s.len;i++) if(s.ch[i]!=t.ch[i])/*有一個對應字符不同時返回0*/ return(0); return(1); }}第十頁,共五十頁,2022年,8月28日5、串連接運算SqStringConcat(SqStrings,SqStringt) { SqStringr; inti,j; for(i=0;i<s.len;i++) /*將s復制到r*/ r.ch[i]=s.ch[i]; for(j=0;j<t.len;j++) /*將t復制到r*/ r.ch[s.len+j]=t.ch[j]; r.len=i+j; return(r); /*返回r*/}第十一頁,共五十頁,2022年,8月28日6、求子串運算SqStringSubStr(SqStrings,inti,intj) { SqStringt; intk; if(i<1||i>s.len||j<1||i+j>s.len+1) t.len=0; /*參數(shù)錯誤時返回空串*/ else { for(k=i-1;k<i+j;k++) t.ch[k-i+1]=s.ch[k]; t.len=j; } return(t);}第十二頁,共五十頁,2022年,8月28日7、查找子串位置運算intIndex(SqStrings,SqStringt) { inti=0,j=0,k; /*i和j分別掃描主串s和子串t*/ while(i<s.len&&j<t.len) { if(s.ch[i]==t.ch[j])/*對應字符相同時,繼續(xù)比較下一對字符*/ { i++;j++; } else *否則,主子串指針回溯重新開始下一次匹配*/ { i=i-j+1;j=0; } } if(j>=t.len) k=i-t.len+1;/*求出第一個字符的位置*/ else k=-1; /*置特殊值-1*/ return(k);}第十三頁,共五十頁,2022年,8月28日8、子串插入運算intInsStr(SqString&s,inti,SqStringt) { intj; if(i>s.len+1) return(0); /*位置參數(shù)值錯誤*/ else { for(j=s.len;j>=i-1;j--) /*將s.ch[i-1]-s.ch[s.len-1]*/ s.ch[j+t.len]=s.ch[j]; /*后移t.len個位置*/ for(j=0;j<t.len;j++) s.ch[i+j-1]=t.ch[j]; s.len=s.len+t.len; /*修改s串長度*/ return(1); }}第十四頁,共五十頁,2022年,8月28日9、子串刪除運算intDelStr(SqString&s,inti,intj) { intk; if(i<1||i>s.len||j<1||i+j>s.len+1) return(0); /*位置參數(shù)值錯誤*/else { for(k=i+j-1;k<s.len;k++)/*將s的第i+j位置之后的字符前移j位*/ s.ch[k-j]=s.ch[k]; s.len=s.len-j; /*修改s的長度*/ return(1); }}第十五頁,共五十頁,2022年,8月28日10、子串替換運算SqStringRepStrAll(SqStrings,SqStrings1,SqStrings2) { inti; i=Index(s,s1); while(i>=0) { DelStr(s,i,s1.len); /*刪除*/ InsStr(s,i,s2); /*插入*/ i=Index(s,s1); } return(s);}11、輸出串運算voidDispStr(SqStrings) { inti; for(i=0;i<s.len;i++) printf("%c",s.ch[i]); printf("\n");}第十六頁,共五十頁,2022年,8月28日串的鏈式存儲及基本運算串的定義:typedefstructnode{ chardata; /*存放字符*/ structnode*next; /*指針域*/}LinkString;第十七頁,共五十頁,2022年,8月28日1、串賦值運算voidAssign(LinkString*&s,chart[]){ inti=0; LinkString*q,*tc; s=(LinkString*)malloc(sizeof(LinkString));/*建立頭結點*/ s->next=NULL; tc=s; /*tc指向s串的尾結點*/ while(t[i]!='\0') { q=(LinkString*)malloc(sizeof(LinkString)); q->data=t[i]; tc->next=q;tc=q; i++; } tc->next=NULL; /*終端結點的next置NULL*/}第十八頁,共五十頁,2022年,8月28日2、串復制運算voidStrCopy(LinkString*&s,LinkString*t) /*t=>s*/{ LinkString*p=t->next,*q,*tc; s=(LinkString*)malloc(sizeof(LinkString));/*建立頭結點*/ s->next=NULL; tc=s; /*tc指向s串的尾結點*/ while(p!=NULL) /*復制t的所有結點*/ { q=(LinkString*)malloc(sizeof(LinkString)); q->data=p->data; tc->next=q;tc=q; p=p->next;} tc->next=NULL; /*終端結點的next置NULL*/}第十九頁,共五十頁,2022年,8月28日3、求串長運算intStrLength(LinkString*s){ intn=0; LinkString*p=s->next; while(p!=NULL) /*掃描串s的所有結點*/ { n++;p=p->next; }return(n);}第二十頁,共五十頁,2022年,8月28日4、判斷串相等運算intStrEqual(LinkString*s,LinkString*t){ LinkString*p=s->next,*q=t->next; while(p!=NULL&&q!=NULL)/*比較兩串的當前結點*/ {if(p->data!=q->data)/*data域不等時返回0*/ return(0);p=p->next;q=q->next; } if(p!=NULL||q!=NULL) /*兩串長度不等時返回0*/ return(0); return(1);}第二十一頁,共五十頁,2022年,8月28日5、串連接運算LinkString*Concat(LinkString*s,LinkString*t){ LinkString*p=s->next,*q,*tc,*str;str=(LinkString*)malloc(sizeof(LinkString));/*建立頭結點*/ str->next=NULL; tc=str; /*tc總是指向新鏈表的尾結點*/ while(p!=NULL) /*將s串復制給str*/ { q=(LinkString*)malloc(sizeof(LinkString)); q->data=p->data; tc->next=q;tc=q; p=p->next;} p=t->next; while(p!=NULL) /*將t串復制給str*/ { q=(LinkString*)malloc(sizeof(LinkString)); q->data=p->data; tc->next=q;tc=q; p=p->next;}tc->next=NULL;return(str);}第二十二頁,共五十頁,2022年,8月28日6、求子串運算LinkString*SubStr(LinkString*s,inti,intj){ intk=1; LinkString*p=s->next,*q,*tc,*str;str=(LinkString*)malloc(sizeof(LinkString));/*建立頭結點*/ str->next=NULL; tc=str; /*tc總是指向新鏈表的尾結點*/ while(k<i&&p!=NULL) { p=p->next;k++; } if(p!=NULL) { k=1; while(k<=j&&p!=NULL) /*復制j個結點*/ { q=(LinkString*)malloc(sizeof(LinkString)); q->data=p->data; tc->next=q;tc=q; p=p->next; k++;} tc->next=NULL; } return(str);}第二十三頁,共五十頁,2022年,8月28日7、查找子串運算intIndex(LinkString*s,LinkString*t){ LinkString*p=s->next,*p1,*q,*q1; inti=0; while(p!=NULL) /*循環(huán)掃描s的每個結點*/ {q=t->next; /*子串總是從第一個字符開始比較*/if(p->data==q->data)/*判定兩串當前字符相等*/{/*若首字符相同,則判定s其后字符是否與t的依次相同*/ p1=p->next;q1=q->next; while(p1!=NULL&&q1!=NULL&&p1->data==q1->data) { p1=p1->next; q1=q1->next; } if(q1==NULL) /*若都相同,返回相同的子串的起始位置*/ return(i);}p=p->next;i++; } return(-1); /*若不是子串,返回-1*/}第二十四頁,共五十頁,2022年,8月28日8、子串插入運算intInsStr(LinkString*&s,inti,LinkString*t){ intk; LinkString*q=s->next,*p,*str; StrCopy(str,t); /*將t復制到str*/ p=str;str=str->next; free(p); /*刪除str的頭結點*/ for(k=1;k<i;k++) /*在s中找到第i-1個結點,由p指向它,q指向下一個結點*/ {if(q==NULL) /*位置參數(shù)i錯誤*/ return(0); p=q; q=q->next; } p->next=str; /*將str鏈表鏈接到*p之后*/ while(str->next!=NULL) /*由str指向尾結點*/ str=str->next; str->next=q; /*將*q鏈接到*str之后*/ return(1);}第二十五頁,共五十頁,2022年,8月28日9、子串刪除運算intDelStr(LinkString*&s,inti,intj){ intk; LinkString*q=s->next,*p,*t; for(k=1;k<i;k++) /*在s中找到第i-1個結點,由p指向它,q指向下一個結點*/ {if(q==NULL) /*位置參數(shù)i錯誤*/ return(0);p=q;q=q->next; }for(k=1;k<=j;k++) /*刪除*p之后的j個結點,并由q指向下一個結點*/ { if(q==NULL) /*長度參數(shù)j錯誤*/return(0); t=q; q=q->next; free(t); } p->next=q; return(1);}第二十六頁,共五十頁,2022年,8月28日10、子串替換運算LinkString*RepStrAll(LinkString*s,LinkString*s1,LinkString*s2){ inti; i=Index(s,s1); while(i>=0) { DelStr(s,i+1,StrLength(s1));/*刪除串s1*/ InsStr(s,i+1,s2); /*插入串s2*/ i=Index(s,s1); } return(s);}第二十七頁,共五十頁,2022年,8月28日11、輸出子串運算voidDispStr(LinkString*s){ LinkString*p=s->next; while(p!=NULL) {printf("%c",p->data);p=p->next; } printf("\n");}第二十八頁,共五十頁,2022年,8月28日4.2多維數(shù)組4.2.1多維數(shù)組的定義及存儲結構1.多維數(shù)組的定義數(shù)組是由下標和值組成的序對的集合。在數(shù)組中,一旦給定下標,都存在一個與其相對應的值,這個值就稱為數(shù)組元素。數(shù)組可以看作是廣義的線性表,即多維數(shù)組對應的線性表中的數(shù)據(jù)元素本身又是一個線性表。數(shù)組一旦被定義,它的維數(shù)和維界就不再改變。因此,數(shù)組的運算通常只有兩種基本運算:(1)取值操作:給定一組下標,存取相應的數(shù)據(jù)元素。(2)賦值操作:給定一組下標,存儲/修改相應數(shù)據(jù)元素。第二十九頁,共五十頁,2022年,8月28日4.2.1多維數(shù)組的定義及存儲結構

2.多維數(shù)組的存儲結構數(shù)組一般不做插入和刪除操作,也就是說,數(shù)組一旦建立,其結構中的元素個數(shù)和元素之間的關系就不再發(fā)生變化,因此數(shù)組可以采用向量(順序)存儲結構來存放。在進行順序存儲時存放次序有兩種規(guī)則:

(1)先行后列順序,或者稱為行優(yōu)先順序,其分配規(guī)律是:最右邊的下標先變化,即最右下標從小到大,循環(huán)一遍后,右邊第二個下標再變,…,從右向左,最后是左下標。

(2)先列后行順序,或者稱為列優(yōu)先順序,其分配的規(guī)律是:最左邊的下標先變化,即最左下標從小到大,循環(huán)一遍后,左邊第二個下標再變,…,從左向右,最后是右下標。第三十頁,共五十頁,2022年,8月28日4.2.1多維數(shù)組的定義及存儲結構對于數(shù)組,一旦確定了它的維數(shù)和各維的長度,便可以為它分配存儲空間。反之,若已知一組下標也可求出對應數(shù)據(jù)元素的存儲位置。例如,假設,一個二維數(shù)組A(m×n)按行優(yōu)先順序存儲在向量中,其第一個元素的序號為0,且已知某個數(shù)據(jù)元素的下標i,j(0≤i≤m-1,0≤j≤n-1),則可用下列公式計算該數(shù)據(jù)元素在向量中的序號index(ai,j):

index(ai,j)=n×i+j+1若已知數(shù)組A(m×n)中第一個元素的存儲地址LOC(a0,0),并已知某個數(shù)據(jù)元素的下標i,j(0≤i≤m-1,0≤j≤n-1),及每個數(shù)據(jù)元素占用的存儲單元數(shù)為b,則該數(shù)據(jù)元素的存儲地址:

LOC(ai,j)=LOC(a0,0)+(index(ai,j)–1)×b=LOC(a0,0)+(n×i+j)×b

第三十一頁,共五十頁,2022年,8月28日4.2.2稀疏矩陣及壓縮1.稀疏矩陣的壓縮存儲若一個矩陣中非零元素的個數(shù)遠遠小于矩陣元素的總數(shù),則稱為稀疏矩陣。對于稀疏矩陣,只須考慮非零元素的存儲。每一個非零元素aij,可以用一個三元組(i,j,v)來惟一確定。其中,i,j是非零元素在矩陣中對應的行號和列號,v是非零元素的值。將稀疏矩陣中的非零元素的三元組按行優(yōu)先的順序排列則得到一個元素類型是三元組的線性表,稱為三元組表。三元組表是稀疏矩陣的一種順序存儲結構。以下的討論中均假定三元組是按行優(yōu)先的順序排列的。稀疏矩陣的三元組存儲的數(shù)據(jù)類型描述如下:第三十二頁,共五十頁,2022年,8月28日4.2.2稀疏矩陣及壓縮#defineMAXLEN40#defineDATATYPE1inttypedefstruct{inti,j;/*非零元素的行號和列號*/DATATYPE1v;/*非零元素的值*/}NODE;typedefstruct{intm,n,t;/*稀疏矩陣的行數(shù)和列數(shù)及非零元素的個數(shù)*/

NODEdata[MAXLEN];/*三元組線性表*/}SPMATRIX;

三元組存儲結構因以行優(yōu)先存放,存在以下的規(guī)律:元組中的第一列按行號的順序由小到大排列,元組中的第二列是列號,列號在行號相同時也是由小到大排列。第三十三頁,共五十頁,2022年,8月28日4.2.2稀疏矩陣及壓縮2.稀疏矩陣的轉置存儲矩陣轉置就是把矩陣元素的行和列對換,一個m行n列的矩陣轉置以后變成一個n行m列的矩陣。例如,矩陣M轉置后得到矩陣N,在矩陣M中位于i,j上的元素,轉置后對應于矩陣N中j,i上的元素,即Mi,j=Nj,i,其中0≤i≤m-1,0≤j≤n-1。以下給出的轉置算法都是在矩陣的三元組存儲結構上實現(xiàn)的(1)一般插入算法算法的思路是:對a.data掃描一遍,掃描過程中依次取出a.data中的每一個三元組元素,將對應的行號和列號對換,放入b.data中。為保證b.data具有三元組存放元素的規(guī)律,需和前面的元素按行及列比較之后,才可插在對應位置上。此算法在移動元素上花去了大量的時間。第三十四頁,共五十頁,2022年,8月28日4.2.2稀疏矩陣及壓縮(2)transpose算法該算法的思路是:考慮到b.data中的行就是a.data中的列,要想得到b.data中行號為x的三元組元素,可對a.data掃描一遍,找出a.data中列號為x的元素即可。以下就是中文描述的transpose算法。①對a.data掃描第1遍,得到a.data[p].j=1(0≤p≤a.t-1)的元素,它們應該就是b.data中行號為1的元素,而且根據(jù)規(guī)律,依次得到的這些元素的行號一定是從小到大排好序的,所以把這些三元組元素的i,j對換放到b.data中,b.data行號為1的元素就放到位了。②對a.data掃描第2遍,得到a.data[p].j=2(1≤p≤a.t)的元素,把這些三元組元素的i,j對換放到b.data中,b.data行號為2的元素就放到位了。③重復①、②的方法,對a.data掃描a.n遍,數(shù)組轉置完成。

第三十五頁,共五十頁,2022年,8月28日4.2.2稀疏矩陣及壓縮voidtranspose(SPMATRIXb,SPMATRIXa){intp,q,col;b.m=a.n;/*行列數(shù)互換*/b.n=a.m;b.t=a.t;/*非零元素個數(shù)不變*/if(a.t!=0){q=0;for(col=0;col<=a.n-1;col++)for(p=0;p<=a.t-1;p++)if(a.data[p].j==col){b.data[q].j=a.data[p].i;b.data[q].i=a.data[p].j;b.data[q].v=a.data[p].v;q++;}}}

第三十六頁,共五十頁,2022年,8月28日4.2.3特殊矩陣的壓縮1.對稱矩陣的壓縮存儲對稱矩陣的特點是:在一個n階方陣中,有aij=aji

,其中0≤i,j≤n-1,如圖4-8所示。對稱矩陣關于主對角線對稱,因此只需存儲上三角或下三角部分即可,比如,我們只存儲下三角中的元素aij,其特點是j≤i且0≤i≤n-1,對于上三角中的元素aij

,它和對應的aji相等,因此當訪問的元素在上三角時,直接去訪問和它對應的下三角元素即可,這樣,原來需要n*n個存儲單元,現(xiàn)在只需要n*(n+1)/2個存儲單元了。第三十七頁,共五十頁,2022年,8月28日4.2.3特殊矩陣的壓縮對下三角部分以行為主序順序存儲到一個向量中去,在下三角中共有n*(n+1)/2個元素,設存儲到向量SA[n(n+1)/2]中,這樣,原矩陣下三角中的某一個元素aij則具體對應一個sak,下面的問題是要找到k與i、j之間的關系。

圖4-8對稱矩陣

第三十八頁,共五十頁,2022年,8月28日4.2.3特殊矩陣的壓縮若i<j,則aij是上三角中的元素,因為aij=aji

,這樣,訪問上三角中的元素aij時則去訪問和它對應的下三角中的aji即可,因此將上式中的行列下標交換就是上三角中的元素在SA中的對應關系:k=j*(j+1)/2+i(0≤k<n*(n+1)/2)綜上所述,對于對稱矩陣中的任意元素aij,若令I=max(i,j),J=min(i,j),則將上面兩個式子綜合起來得到:第三十九頁,共五十頁,2022年,8月28日4.2.3特殊矩陣的壓縮2.三角矩陣的壓縮存儲形如圖4-10的矩陣稱為三角矩陣,其中c為某個常數(shù)。其中(a)為上三角矩陣:主對角線以下均為同一個常數(shù);(b)為下三角矩陣:主對角線以上均為同一個常數(shù)。三角矩陣中的重復元素c可共享一個存儲空間,其余的元素正好有n×(n+1)/2個,共存儲了n×(n+1)/2+1個元素,因此,三角矩陣可壓縮存儲到一維數(shù)組sa[n(n+1)/2+1]中,其中c存放在向量的最后一個分量中。(a)

上三角矩陣

(b)

下三角矩陣

第四十頁,共五十頁,2022年,8月28日4.2.3特殊矩陣的壓縮(1)上三角矩陣的壓縮對于上三角矩陣,以行優(yōu)先順序存儲上三角部分,最后存儲對角線下方的常量。第i行上,aij之前恰有j-i+1個元素(即aii,ai,i+1,…,ai,j-1);所以,它是上三角存儲順序中的第

i×(2n-i+1)/2+j-i+1個元素,因此它在向量sa中的下標為:k=i×(2n-i+1)/2+j-i。故aij(0≤i,j≤n-1)對應存儲向量sa中的下標k(0≤k≤n(n+1)/2):第四十一頁,共五十頁,2022年,8月28日4.2.3特殊矩陣的壓縮與上三角矩陣類似,按行優(yōu)先順序存儲。

sak(0≤k≤n(n+1)/2)與aij(0≤i,j≤n-1)的對應關系為:

第四十二頁,共五十頁,2022年,8月28日4.2.3特殊矩陣的壓縮3.對角矩陣的壓縮存儲所有的非零元素集中在以主對角線為中心的帶狀區(qū)域中,即除了主對角線和主對角線相鄰兩側的若干條對角線上的元素之外,其余元素皆為零的矩陣為對角矩陣。對角矩陣又稱為帶狀矩陣。圖4-13是一個三對角矩陣示意圖。

圖4-13對角矩陣示意圖

第四十三頁,共五十頁,2022年,8月28日4.2.3特殊矩陣的壓縮若以行為主序將三對角矩陣存儲到一個一維數(shù)組中,則需要3*n-2個存儲空間。假設存儲到向量SA[3*n-2]中,存儲順序如圖4-14所示。向量中的元素sak(0≤k≤3n-1)與aij(0≤i,j≤n-1)的對應關系為:

圖4-14三對角矩陣壓縮存儲

第四十四頁,共五十頁,2022年,8月28日4.4應用舉例分析例4.1

已知字符串:A=“anapple”,B=“otherhero”,C=“her”,求:

(1)concat(substr(A,1,2),B)。

(2)replace(A,substr(A,5,1),C)。

(3)index(A,C)和index(B,C)。解:

(1)substr(A,1,2)的返回值為”an”,故concat(substr(A,1,2),B)的返回值為“anotherhero”。

(2)substr(A,5,1)的返回值為“p”,故replace(A,substr(A,5,1),C)的返回值為“anaherherle”。

(3)index(A,C)的返回值為0,index(B,C)的返回值為3。

第四十五頁,共五十頁,2022年,8月28日4.4應用舉例分析例4.2

已知一個二維數(shù)組A,行下標1≤i≤7,列下標1≤j≤9,每個元素的長度為2字節(jié),從首地址200開始連續(xù)存放在內存中,該數(shù)組元素按行優(yōu)先存放,問:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論