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

2021-10-03 03:59:56 字數 2430 閱讀 3833

/*

陣列的特點:結構固定--定義後,維數和維界不再改變

陣列的基本操作:除了結構的初始化和銷毀之外,只有取元素和修改元素值的操作。

*/#include #include #include #include #include // 標準標頭檔案,提供巨集va_start,va_arg和va_end,用於訪問變長參數列

#include // 函式結果狀態**

#define true 1

#define false 0

#define ok 1

#define error 0

#define infeasible -1

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

typedef int boolean; // boolean 是布林型別,其值是 true 或 false

typedef int elemtype;

// c 陣列的順序儲存表示

#define max_array_dim 8 // 假設陣列維數的最大值為 8

typedef struct array

array;

// 順序儲存陣列的基本操作(5個)

/* 構造陣列 a */

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

va_end(ap);

a->base = (elemtype *)malloc(elemtotal * sizeof(elemtype));

if (!a->base)

exit(-1);

a->constants = (int *)malloc(dim * sizeof(int));

if (!a->constants)

exit(-1);

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 */

void destroyarray(array *a)

status locate(array a, va_list ap, int *off) // value()、assign() 呼叫此函式

return ok;

}/* 取陣列元素值 */

status value(elemtype *e, array a, ...) // 在 vc++ 中,...之前的形參不能是引用型別

/* 給陣列元素賦值 */

status assign(array a, elemtype e, ...) // 變數 a 的值不變,故不需要 &

int main(int argc, char *ar**)

printf("\n");

}printf("\n");

}p1 = a.base;

printf("a.base=\n");

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

printf("a.dim=%d\n", a.dim);

destroyarray(&a);

return 1;}/*

a.bounds=3 4 2

a.constants=8 2 1

3 page 4 hang 2 lie is:

a[0][0][0]= 0 a[0][0][1]= 1

a[0][1][0]=10 a[0][1][1]=11

a[0][2][0]=20 a[0][2][1]=21

a[0][3][0]=30 a[0][3][1]=31

a[1][0][0]=100 a[1][0][1]=101

a[1][1][0]=110 a[1][1][1]=111

a[1][2][0]=120 a[1][2][1]=121

a[1][3][0]=130 a[1][3][1]=131

a[2][0][0]=200 a[2][0][1]=201

a[2][1][0]=210 a[2][1][1]=211

a[2][2][0]=220 a[2][2][1]=221

a[2][3][0]=230 a[2][3][1]=231

a.base=

0 1 10 11 20 21 30 31

100 101 110 111 120 121 130 131

200 201 210 211 220 221 230 231

a.dim=3

*//****************** end of file ******************/

資料結構 串的順序表示和實現

上次寫鏈式串的時候就覺得太麻煩了,而且還不一定好用,今天就寫順序的果然方便很多。寫的串是常用的字串以及一些常用函式。全部自己原創的,如有不足還請指出。include using namespace std const int maxn int 1e6 7 typedef struct chunk c...

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

以下為展示順序陣列的示例 1.用c語言實現的版本 include eof z或f6 null include floor ceil abs include 申請和釋放記憶體 include 可變引數 define ok 1 成功標誌 define error 0 錯誤標誌 define max ar...

資料結構 陣列的儲存表示和實現

採用書上第93頁定義的陣列的順序儲存表示,程式設計實現陣列的下列基本操作 1 構造陣列 2 銷毀陣列 3 取陣列元素值 4 給陣列元素賦值 2.採用書上第98頁定義的稀疏矩陣的三元組順序表儲存表示,程式設計實現矩陣的轉置運算演算法和快速轉置演算法。7.1 include include includ...