- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二维阵列中元素对应的位址
Chap 2 Array (陣列) 抽象資料型態 C++中, 類別(class)包含四個元件: 類別名稱 資料成員 : the data that makes up the class 成員函數 : the set of operations that may be applied to the objects of class 程式可被使用程度 : public, protected and private. Definition of Rectangle #ifndef RECTANGLE_H #define RECTANGLE_H Class Rectangle{ Public: Rectangle(); ~Rectangle(); int GetHeight(); int GetWidth(); Private: int xLow, yLow, height, width; }; #endif Array 0 1 2 3 0 1 2 A[0][0] A[0][1] A[0][2] A[0][3] A[1][0] A[1][1] A[1][2] A[1][3] 映射: A[i][j]=A[0][0]+i*4+j A[2][1] char A[3][4]; // row-major 邏輯結構 實際結構 Array 一維陣列的運算 儲存 將新值寫入陣列中某個位置 A[3] = 45 O(1) A 0 1 2 3 ... 45 多項式表示法 Representation 1 private: int degree; // degree ≤ MaxDegree float coef [MaxDegree + 1]; Representation 2 private: int degree; float *coef; Polynomial::Polynomial(int d) { degree = d; coef = new float [degree+1]; } Representation 3 class Polynomial; // forward delcaration class term { friend Polynomial; private: float coef; // coefficient int exp; // exponent }; private: static term termArray[MaxTerms]; static int free; int Start, Finish; term Polynomial:: termArray[MaxTerms]; Int Polynomial::free = 0; // location of next free location in temArray 利用陣列表達多項式 利用陣列表示以下兩個多項式: A(x) = 2x1000 + 1 B(x) = x4 + 10x3 + 3x2 + 1 A.Start A.Finish B.Start B.Finish free coef 2 1 1 10 3 1 exp 1000 0 4 3 2 0 0 1 2 3 4 5 6 多項式相加 只存非零值(non-zero):一元多項式 兩個多項式相加: A(x) = 2x1000 + 1 B(x) = x4 + 10x3 + 3x2 + 1 A_coef A_exp 2 2 1 1000 0 B_coef 0 1 2 3 4 B_exp 4 1 10 3 1 4 3 2 0 0 1 2 C_coef 0 1 2 3 4 C_exp 5 2 1000 1 4 10 3 3 2 2 0 5 多項式相加 Polynomial Polynomial:: Add(Polynomial B) // return the sum of A(x) ( in *this) and B(x) { Polynomial C; int a = Start; int b = B.Start; C.Start = free; float c; while ((a = Finish) (b = B.Finish)) switch (compare(termArray[a].exp, termArray[b].exp)) { case ‘=‘: c = termArray[a].coef +termArray[b].coef; if ( c ) NewTerm(c, t
文档评论(0)