数据结构 第 5 章 数组和广义表
DESCRIPTION
数据结构 第 5 章 数组和广义表. 什么是数组和广义表?? 数组和广义表的存储结构. 数组和广义表可看成是一种特殊的线性表,其特殊在于,表中的数据元素本身也是一种线性表。. 数组. 数组:是所有高级编程语言中都已实现的固有数据类型。但它和其它诸如整数、实数等原子类型不同,它是一种结构类型。换句话说, " 数组 " 是一种数据结构。 一维数组 A[n1] :定长的线性表 二维数组 A[n1][n2] :每个数据元素也是一个定长的线性表的线性表。 - PowerPoint PPT PresentationTRANSCRIPT
-
5
-
""A[n1]A[n1][n2]
Am[X0X1 Xm-1]TXi=( ai0, ai1, .,ain-1) 0im-1An[y0, y1, ,yn-1] yi=(a0i, a1i, ..,am-1i)0in-1
a00 a01 a0n-1
a10 a11 a1n-1
.
A=
am-1 0 am-1 1 am-1 n-1
- ADT Array{: D={aj1j2..jn|n>=0, jiiaj1j2...jn (-ElemSet} : R={R1,R2,...Rn} Ri={|0
-
"()()""()()"
-
()()i+1i Am*n()() a00,a01,,a0n-1,a10,a11,a1n-1,,am-10,am-11,,am-1n-1 nPASCALC()()
()()j+1j Am*n()()a00,a10,,am-10,a01,a11,am-11,,a0n-1,a1n-1,,am-1n-1nFORT0RAN
-
LAmnaij()() LOC(aij)=LOC(a00)+(in+j)L()() LOC(aij)=LOC(a00)+(jm+i)L()()Ab1b2b3aj1j2j3 LOC(aj1j2j3)=LOC(a000)+(j1b2b3+j2b3+j3)LNAb1b2bnaj1j2jn LOC(aij)= LOC(a000)+(j1b2bn+j2b3bn++jn-1 bn +jn)L
-
nA aij=aji 0i,jn-1A
-
ii+1n(n+1)/2.sa[0..n(n+1)/2-1]Aaijsa[k]ijaijaiji0i-11+2++i=i(i+1)/2iaijj k=i*(i+1)/2+ji
-
c
c
-
0n-1233n-2sasasa[k]aijaiji,3*i-1ij-i+1aij LOC(i,j)=LOC(0,0)+[3*i-1+(j-i+1)]*L=LOC(0,0)+(2i+j)*L
-
Asss0.5mnA
-
i,j)(i,j,aij)A((1,2,12)(1,3,9),(3,1,- 3),(3,6,14),(4,3,24), (5,2,18),(6,1,15),(6,4,-7))(6,7)M
-
#define maxsize 12500 typedef struct{ int i,j; datatype v; }triple;
typedef struct{ triple data[maxsize + 1];//data[0] int m,n,t; //t }tripletable;
-
(i,j)i,i
-
mnABnma[i][j]=b[j][i]0i
- ABa.dataBb.dataAcol(0coln-1)a.datacolb.dataBStatus TransposeSMatrix(TSMatrix M, TSMatrix &T) {T.mu = M.nu; T.nu = M.mu; T.tu = M.tu; if (T.tu) { q = 1; for (col=1; col
- for(row=0;row
- a.databAcolBb.datacpot[col]0col
- Status FastTransposeSMatrix(TSMatrix M, TSMatrix &T) {T.mu = M.nu; T.nu = M.mu; T.tu = M.tu; if (T.tu) { for (col=1; col
-
icpot[col]#define MAXRC 100 typedef struct{ Triple data[MAXSIZE +1]; int rpos[MAXRC +1];// int mu,nu,tu; }RLSMATRIX
- Q=M*NMm1*n1Nm2*n2n1=m2 for(i=1;i
- Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix &Q) { if (M.nu != N.mu) return ERROR; Q.mu = M.mu; Q.nu = N.nu; Q.tu = 0; // Q if (M.tu*N.tu != 0) { // Q for (arow=1; arow
- ctempO(M.mu*N.nu)QO(M.tu*N.tu/N.mu)N.tu/N.muNQ O(M.mu*N.nu)O(M.mu*N.nu)+O(M.tu*N.tu/N.mu)+O(M.mu*N.nu)= O(M.mu*N.nu+M.tu*N.tu/N.mu) M m n N n p M M.tu = qmmnN N.tu = qnnpO(mp(1+nqmqn)) qm
-
i,j,vrightdownrightdownij
-
typedef struct OLNode{ int i,j; ElemType e; struct OLNode *right *down; }OLNode; *OLink
typedef struct{ OLink *rhead, *chead;int mu,nu,tu; }CrossList;
-
Status CreateSMatrix_OL (CrossList &M) {if(M) free(M);scanf(&m,&n,&t); M.mu=m; M.nu=n; M.tu=t; if (!(M.rhead = (OLink *)malloc((m+1)*sizeof(OLink)))) return ERROR; if (!(M.chead = (OLink *)malloc((n+1)*sizeof(OLink)))) return ERROR; for(int a=1;ae=e; // if (M.rhead[i] == NULL || M.rhead[i]->j > j) { p->right = M.rhead[i]; M.rhead[i]= p; } else { // for (q=M.rhead[i]; (q->right) && (q->right->jright); p->right = q->right; q ->right = p; } // if (M.chead[j] == NULL || M.chead[j]->i > i) { p->down = M.chead[j]; M.chead[j]= p; } else { // for ( q=M.chead[j]; (q->down) && q->down->i down ); p->down = q->down; q->down = p; } // } // for return OK;} // CreateSMatrix_OL O(t*max(m,n))
-
(A=A+B)ABBA1aij+bij e2aijbij=03bijaij=0;e4)0ABpapbAB41pa->j==pb->j pa->e+pb->e0aij+bijpa2pa->jjpa->j0pa3pa->j>pb->jpa->j=0Apb4pa->j==pb->jpa->e+pb->e=0,Aparptrcptr
-
preApahlA
-
A=A+B(1)papbAB pa=A.rhead[1]; pb=B.rhead[1]; pre = NULL;hl for(i = 1; i j>pb->j(pb->e == 0) (A),Apbp: Aif(pre == NULL) A.rhead[p->i] = p;else pre->right = p;p->right = pa; pre = p;Ahl[p->j]hl[p->j]p:ifA.chead[p->j] || A.chead[p->i]>p->i{p->down = A.chead[p->j]; A.chead[p->j] = p;}else{ p->down = hl[p->j]->down; hl[p->j]->down = p;}hl[p->j] = p;pa!=NULL&&pa->jj,papre = pa; pa = pa->right;pa->j == pb->jpa->e + pb->e != 0,BApa->e += pb->epa->e + pb->e == 0,Aif(pre == NULL) A.rhead[pa->i] = pa->right;else{pre->right = pa->right;}p = pa; pa = pa->right; hl[p->j]hl[p->j]if(A.chead[p->j] == p) A.chead[p->j] = hl[p->j] = p->down;else{hl[p->j]->down = p->down;}free(p)(3)papb
-
ListsL = (a, L)LS=a1,a2,a3,,an)LSnLS a1LShead,a2,a3,,an)LStail
-
1A=( )A02B=(e)B13C=(a,b,c,d)C2ab,c,d4D=(A,B,C)D3,D=((),e, (a,b,c,d))5E=(a,E)2E=(a,(a,(a,)))
01