資料結構示例之順序陣列的實現

2021-07-24 02:10:16 字數 2270 閱讀 2187

以下為展示順序陣列的示例:

1.用c語言實現的版本

#include/* eof(=^z或f6),null */

#include/* floor(),ceil(),abs() */

#include/*申請和釋放記憶體*/

#include/*可變引數*/

#define ok 1 //成功標誌

#define error 0 //錯誤標誌

#define max_array_dim 8 //陣列最大維數

typedef int elemtype;

typedef int status; /* status是函式的型別,其值是函式結果狀態**,如ok等 */

typedef struct

array;

/* 順序儲存陣列的基本操作*/

status initarray(array *a, int dim, ...)

(*a).dim = dim; /* 陣列維數 */

(*a).bounds = (int *)malloc(dim*sizeof(int)); /* 陣列維界基址 */

if (!(*a).bounds)

va_list ap;

va_start(ap, dim);

for (i = 0; i < dim; ++i)

elemtotal *= (*a).bounds[i];

} va_end(ap);

(*a).base = (elemtype *)malloc(elemtotal*sizeof(elemtype));

if (!(*a).base)

(*a).constants = (int *)malloc(dim*sizeof(int));

if (!(*a).constants)

(*a).constants[dim - 1] = 1;

for (i = dim - 2; i >= 0; --i)

return ok;

}/* 銷毀陣列a */

status destroyarray(array *a)

else

if ((*a).bounds)

else

if ((*a).constants)

else

return ok;

}/* 若ap指示的各下標值合法,則求出該元素在a中的相對位址off */

/* value()、assign()呼叫此函式 */

status locate(array a, va_list ap, int *off)

*off += a.constants[i] * ind;

} return ok;

}/* ...依次為各維的下標值,若各下標合法,則e被賦值為a的相應的元素值 */

status value(elemtype *e, array a, ...)

*e = *(a.base + off);

return ok;

}/* ...依次為各維的下標值,若各下標合法,則將e的值賦給a的指定的元素 */

status assign(array *a, elemtype e, ...)

*((*a).base + off) = e;

return ok;

}void main()

printf("\n");

/* 順序輸出a.constants */

printf("輸出陣列映像函式常量基數的值(相當於每一維度的權重值):\n ");

p = a.constants;

for (i = 0; i < dim; ++i)

printf("\n\n");

printf("%d頁%d行%d列矩陣元素如下:\n", bound1, bound2, bound3);

for (i = 0; i < bound1; ++i)

printf("\n");

} printf("\n");

} p1 = a.base;

printf("順序輸出array的元素\n");

for (i = 0; i < bound1*bound2*bound3; ++i) /* 順序輸出a.base */ }

/* 銷毀陣列a */

destroyarray(&a);

}

執行結果如下圖所示:

《資料結構》 順序陣列的實現和表示

陣列的特點 結構固定 定義後,維數和維界不再改變 陣列的基本操作 除了結構的初始化和銷毀之外,只有取元素和修改元素值的操作。include include include include include 標準標頭檔案,提供巨集va start,va arg和va end,用於訪問變長參數列 incl...

資料結構示例之陣列模擬多棧實現

以下為 使用陣列實現多個連續棧 的示例 1.用c語言實現的版本 include include define memory size 100 記憶體大小 define max stacks 11 棧的個數最大值加1 typedef char element element memory memory...

資料結構之順序棧的實現

我們知道棧可以完成的基本操作是入棧,出棧,取棧頂元素,可以由順序表形式實現,也可以由鍊錶形式實現 今天我們就來實現一下順序棧 首先來看下順序棧的實現 seqstack.h pragma once include include include define header printf n s n f...