1、問題描述
在寬甸等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作定制設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,營銷型網(wǎng)站,外貿(mào)網(wǎng)站制作,寬甸網(wǎng)站建設(shè)費(fèi)用合理。寫一個(通用)二維數(shù)組的工具,可以按照數(shù)組的下標(biāo)訪問數(shù)組元素;
算法思路:實(shí)際上我們是申請一個一維數(shù)組,通過定義一些函數(shù),讓使用者"感覺"其使用的是二維數(shù)組甚至是多維數(shù)組;
其數(shù)據(jù)結(jié)構(gòu)的控制頭為:
typedef struct MATRIX{ USER_TYPE *data; int maxRow; int maxCol; }MATRIX;
2、通用二維數(shù)組的實(shí)現(xiàn)
(1)、commonMatrix.h
#ifndef _COMMON_MATRIX_H_ #define _COMMON_MATRIX_H_ #include<malloc.h> typedef unsigned char boolean; typedef struct MATRIX{ USER_TYPE *data; int maxRow; int maxCol; }MATRIX; #define TRUE 1 #define FALSE 0 void initMatrix(MATRIX **matrixHead, int maxRow, int maxCol); void destoryMatrix(MATRIX **matrixHead); boolean setElementAt(MATRIX matrix, int row, int col, USER_TYPE value); boolean getElementAt(MATRIX matrix, int row, int col, USER_TYPE *value); boolean getElementAt(MATRIX matrix, int row, int col, USER_TYPE *value){ if(row < 0 || col < 0 || row >= matrix.maxRow || col >= matrix.maxCol){ return FALSE; } *value = matrix.data[row*matrix.maxCol + col]; return TRUE; } boolean setElementAt(MATRIX matrix, int row, int col, USER_TYPE value){ if(row < 0 || col < 0 || row >= matrix.maxRow || col >= matrix.maxCol){ return FALSE; } matrix.data[row*matrix.maxCol + col] = value; return TRUE; } void destoryMatrix(MATRIX **matrixHead){ if(*matrixHead == NULL){ return; } if((*matrixHead)->data != NULL){ free((*matrixHead)->data); } free(*matrixHead); *matrixHead = NULL; } void initMatrix(MATRIX **matrixHead, int maxRow, int maxCol){ MATRIX *matrix = NULL; if(*matrixHead != NULL || maxRow <= 0 || maxCol <= 0){ return; } matrix = (MATRIX *)calloc(sizeof(MATRIX), 1); matrix->maxRow = maxRow; matrix->maxCol = maxCol; matrix->data = (USER_TYPE *)calloc(sizeof(USER_TYPE), maxRow * maxCol); *matrixHead = matrix; } #endif
(2)、commonMatrix.c
#include<stdio.h> typedef int USER_TYPE; //用戶自定義數(shù)據(jù)類型 //利用數(shù)據(jù)結(jié)構(gòu)與算法的思想,做出了通用二維數(shù)組的工具,可以避開二維數(shù)組行、列長度不定的問題 #include"./commonMatrix.h" void main(void){ MATRIX *matrix = NULL; int maxRow; int maxCol; int value; printf("請輸入二維數(shù)組的行、列: "); scanf("%d%d", &maxRow, &maxCol); initMatrix(&matrix, maxRow, maxCol); setElementAt(*matrix, 1, 1, 2); //用戶的做自己返回時檢測 getElementAt(*matrix, 1, 1, &value); //用戶的做自己返回時檢測 printf("matrix[1][1] = %d\n", value); destoryMatrix(&matrix); }
3、結(jié)果截圖
4、算法分析
(1)、二維數(shù)組的本質(zhì)是一位數(shù)組;
(2)、解決了長度不定的問題;
(3)、在對操作時,關(guān)鍵是數(shù)組下標(biāo)的定位;
(4)、a[i] <==> *(a+i);
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站欄目:通用的二維數(shù)組-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://jinyejixie.com/article20/dhdhjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站設(shè)計公司、服務(wù)器托管、網(wǎng)站導(dǎo)航、App開發(fā)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容