亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言數據結構之順序數組的實現

2020-01-26 13:56:52
字體:
來源:轉載
供稿:網友

C語言數據結構之順序數組的實現

以下為展示順序數組的示例:

1.用C語言實現的版本

#include<stdio.h> /* EOF(=^Z或F6),NULL */ #include<math.h> /* floor(),ceil(),abs() */ #include<stdlib.h> /*申請和釋放內存*/ #include<stdarg.h> /*可變參數*/ #define OK 1 //成功標志 #define ERROR 0 //錯誤標志 #define MAX_ARRAY_DIM 8 //數組最大維數  typedef int ElemType; typedef int Status; /* Status是函數的類型,其值是函數結果狀態代碼,如OK等 */ typedef struct {   ElemType *base; /* 數組元素基址,由InitArray分配 */   int dim; /* 數組維數 */   intint *bounds; /* 數組維界基址,由InitArray分配 */   intint *constants; /* 數組映象函數常量基數,相當于每一維度的權重值,由InitArray分配 */ }Array;  /* 順序存儲數組的基本操作*/ Status InitArray(Array *A, int dim, ...) { /* 若維數dim和各維長度合法,則構造相應的數組A,并返回OK */   int elemtotal = 1, i; /* elemtotal是元素總值 */   if (dim<1 || dim>MAX_ARRAY_DIM) //判斷數組維數   {     return ERROR;   }   (*A).dim = dim; /* 數組維數 */   (*A).bounds = (intint *)malloc(dim*sizeof(int)); /* 數組維界基址 */   if (!(*A).bounds)   {     exit(OVERFLOW);   }    va_list ap;   va_start(ap, dim);   for (i = 0; i < dim; ++i)   {     (*A).bounds[i] = va_arg(ap, int);     if ((*A).bounds[i] < 0)     {       return UNDERFLOW; /* 在math.h中定義為4 */     }     elemtotal *= (*A).bounds[i];   }   va_end(ap);    (*A).base = (ElemType *)malloc(elemtotal*sizeof(ElemType));   if (!(*A).base)   {     exit(OVERFLOW);   }    (*A).constants = (intint *)malloc(dim*sizeof(int));   if (!(*A).constants)   {     exit(OVERFLOW);   }        (*A).constants[dim - 1] = 1;   for (i = dim - 2; i >= 0; --i)    {     (*A).constants[i] = (*A).bounds[i + 1] * (*A).constants[i + 1];   }        return OK; }  /* 銷毀數組A */ Status DestroyArray(Array *A) {    if ((*A).base)   {     free((*A).base);     (*A).base = NULL;   }   else   {     return ERROR;   }        if ((*A).bounds)   {     free((*A).bounds);     (*A).bounds = NULL;   }   else   {     return ERROR;   }    if ((*A).constants)   {     free((*A).constants);     (*A).constants = NULL;   }   else   {     return ERROR;   }    return OK; }  /* 若ap指示的各下標值合法,則求出該元素在A中的相對地址off */ /* Value()、Assign()調用此函數 */ Status Locate(Array A, va_list ap, intint *off)  {   int i, ind;   *off = 0;   for (i = 0; i < A.dim; ++i)   {     ind = va_arg(ap, int);     if (ind < 0 || ind >= A.bounds[i])     {       return OVERFLOW;     }     *off += A.constants[i] * ind;   }   return OK; }  /* ...依次為各維的下標值,若各下標合法,則e被賦值為A的相應的元素值 */ Status Value(ElemType *e, Array A, ...) {   va_list ap;   Status result;   int off;   va_start(ap, A);   if ((result = Locate(A, ap, &off)) == OVERFLOW) /* 調用Locate() */   {     return result;   }   *e = *(A.base + off);   return OK; }  /* ...依次為各維的下標值,若各下標合法,則將e的值賦給A的指定的元素 */ Status Assign(Array *A, ElemType e, ...) {    va_list ap;   Status result;   int off;   va_start(ap, e);   if ((result = Locate(*A, ap, &off)) == OVERFLOW) /* 調用Locate() */   {     return result;   }   *((*A).base + off) = e;   return OK; }  void main() {   Array A;   int i, j, k, *p, dim = 3, bound1 = 3, bound2 = 4, bound3 = 2; /* a[3][4][2]數組 */   ElemType e, *p1;    /* 構造3*4*2的3維數組A */   InitArray(&A, dim, bound1, bound2, bound3);     /* 順序輸出A.bounds */   printf("輸出數組各維度的值:/n ");   p = A.bounds;   for (i = 0; i < dim; ++i)   {     printf("A.bounds[%d] = %d/n ", i, *(p + i));   }   printf("/n");    /* 順序輸出A.constants */   printf("輸出數組映像函數常量基數的值(相當于每一維度的權重值):/n ");   p = A.constants;   for (i = 0; i < dim; ++i)   {     printf("A.constants[%d] = %d/n ", i, *(p + i));   }   printf("/n/n");    printf("%d頁%d行%d列矩陣元素如下:/n", bound1, bound2, bound3);   for (i = 0; i < bound1; ++i)   {     printf("第%d頁:/n", i);     for (j = 0; j < bound2; ++j)     {       for (k = 0; k < bound3; ++k)       {         Assign(&A, i * 100 + j * 10 + k, i, j, k); /* 將i*100+j*10+k賦值給A[i][j][k] */         Value(&e, A, i, j, k); /* 將A[i][j][k]的值賦給e */         printf("A[%d][%d][%d]=%2d ", i, j, k, e); /* 輸出A[i][j][k] */       }       printf("/n");     }     printf("/n");   }    p1 = A.base;   printf("順序輸出Array的元素/n");   for (i = 0; i < bound1*bound2*bound3; ++i) /* 順序輸出A.base */   {     printf("%4d", *(p1 + i));     //輸出換行     if (i % (bound2*bound3) == (bound2*bound3 - 1))     {       printf("/n");     }   }    /* 銷毀數組A */   DestroyArray(&A); } 

運行結果如下圖所示:

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美中文字幕第一页| 国产日韩精品在线观看| 亚洲欧美日韩中文在线| 精品国产一区二区三区久久久狼| 久久天堂电影网| 国产日韩欧美影视| 国产精品美女久久| 欲色天天网综合久久| 日韩资源在线观看| 日韩高清中文字幕| 日韩成人中文电影| 青青草成人在线| 久久国产视频网站| 日韩免费黄色av| 久久九九免费视频| 亚洲精品免费网站| 91青草视频久久| 国产成人+综合亚洲+天堂| 丝袜亚洲另类欧美重口| 成人中文字幕在线观看| 伊人伊人伊人久久| 国产免费一区二区三区香蕉精| 国产精品久在线观看| 疯狂蹂躏欧美一区二区精品| 91免费福利视频| 国产精品综合久久久| 日韩美女主播视频| 最近2019中文免费高清视频观看www99| 欧美激情第1页| 国产欧美一区二区| 两个人的视频www国产精品| 国语自产精品视频在免费| 亚洲丁香婷深爱综合| 色综合男人天堂| 欧美裸身视频免费观看| 国产精品福利无圣光在线一区| 欧美中文字幕第一页| 国产在线98福利播放视频| 国产午夜精品理论片a级探花| 最近的2019中文字幕免费一页| 97成人精品区在线播放| 中文字幕亚洲字幕| 国产欧美在线视频| 久久五月情影视| 最近2019年中文视频免费在线观看| 亚洲色图第三页| 成人乱色短篇合集| 国产午夜精品一区理论片飘花| 成人亚洲综合色就1024| 97精品国产aⅴ7777| 成人午夜两性视频| 欧美成人在线网站| 欧美一区亚洲一区| 成人网页在线免费观看| 人人澡人人澡人人看欧美| 国产精品久久久久久久7电影| 欧美最猛性xxxxx亚洲精品| 久久久精品国产| 亚洲综合最新在线| 精品久久久一区| 疯狂欧美牲乱大交777| 欧美中文在线视频| 2019最新中文字幕| 成人妇女淫片aaaa视频| 亚洲春色另类小说| 欧美大学生性色视频| 国产精品毛片a∨一区二区三区|国| 亚洲精品91美女久久久久久久| 欧美老妇交乱视频| 91色在线观看| 国产日本欧美在线观看| 中文字幕日韩欧美在线| 最近2019免费中文字幕视频三| 一区二区三区视频观看| 色综合色综合久久综合频道88| 日韩欧美在线网址| 在线精品91av| 姬川优奈aav一区二区| 日韩精品一二三四区| 精品福利在线看| 精品自拍视频在线观看| 精品日本美女福利在线观看| 黄色成人av在线| 91精品国产色综合久久不卡98口| 亚洲网站视频福利| 97成人在线视频| 国产精品久久久久久久一区探花| 欧美亚洲国产精品| 欧美尤物巨大精品爽| 国产精品吹潮在线观看| 欧美亚洲伦理www| 一本一本久久a久久精品综合小说| 日韩小视频在线| 国产精品人人做人人爽| 国产精品电影网| 欧美午夜女人视频在线| 亚洲国产中文字幕久久网| 欧美猛男性生活免费| 亚洲一区中文字幕| 伊人久久久久久久久久久| 色黄久久久久久| 亚洲视频自拍偷拍| 国产精品视频一区国模私拍| 国产精品久久久久影院日本| 亚洲综合在线播放| 91tv亚洲精品香蕉国产一区7ujn| 亚洲高清一二三区| 亚洲国产精品成人av| 欧美性受xxx| 狠狠色狠色综合曰曰| 欧亚精品中文字幕| 欧美国产欧美亚洲国产日韩mv天天看完整| 奇米一区二区三区四区久久| 久久精品男人天堂| 日韩欧美一区视频| 在线精品视频视频中文字幕| 欧美国产第二页| 精品香蕉在线观看视频一| 国产亚洲一区精品| 91国内揄拍国内精品对白| 亚洲美女av在线播放| 欧美精品生活片| 亚洲乱码av中文一区二区| 麻豆一区二区在线观看| 亚洲精品国产福利| 国产精品久久久久av| 国产一区二区三区视频| 亚洲精品美女在线| 中文字幕视频在线免费欧美日韩综合在线看| 国产精品福利小视频| 日韩视频免费中文字幕| 亚洲午夜国产成人av电影男同| 久久国产精品偷| 日韩大陆毛片av| 69久久夜色精品国产7777| 91精品啪在线观看麻豆免费| 亚洲精品国产精品国自产在线| 综合欧美国产视频二区| 性夜试看影院91社区| 亚洲日韩中文字幕| 国产精品久久久久aaaa九色| 国内精品视频久久| 欧美特黄级在线| 亚洲成人精品视频在线观看| 国产精品入口日韩视频大尺度| 成人免费看片视频| 欧美极品少妇xxxxⅹ免费视频| 国产精品毛片a∨一区二区三区|国| 日韩在线观看免费高清| 欧美电影院免费观看| 国产精品综合久久久| 亚洲黄页视频免费观看| 色妞在线综合亚洲欧美| 日韩在线高清视频| 福利视频第一区| 亚洲一区二区三区xxx视频| 在线观看精品自拍私拍| 亚洲精品欧美日韩专区| 欧美日韩性视频在线| 亚洲一区二区三区成人在线视频精品| 日韩电影中文 亚洲精品乱码| 正在播放国产一区| 51久久精品夜色国产麻豆| 亚洲精品白浆高清久久久久久|