第五章 陣列和廣義表(1)

2021-08-15 09:02:46 字數 2552 閱讀 4706

1、陣列的定義:

陣列:由一組名字相同,下表不同的標量構成

(注意:本章所討論的陣列與高階語言中的陣列有所區別:高階語言中的陣列的順序結構;而本章的陣列既可以順序的,也可以是鏈式結構,使用者可根據需要選擇。)

2、陣列的結構:

(1)陣列中各元素具有統一的型別

(2)陣列元素的下標一般具有固定的上界和下界,即陣列一旦被定義,它的維數和維界就不再改變。

(3)陣列的基本操作比較簡單,除了結構的初始化和銷毀之外,只有訪問元素和修改元素值得操作

3、陣列的特點

4、陣列抽象資料a型別陣列的定義:

adt array

資料關係: r=

ri=

基本操作:

initarray( &a ,n,bound 1 ,..., bound n )

操作結果:若維數 n 和各維長度合法,則構造相應的陣列 a ,並返回 ok。

destroyarray( &a )

操作結果:銷毀陣列 a 。

value( a ,&e , index1, ... , indexn)

初始條件:a是 n維陣列,e 是元素變數 ,隨後是 n 個下標值。

操作結果:若各下標不超界,則 e 賦值為所指定的 a 的元素值,並返回ok。

assign( &a , e , index1, ... ,indexn )

初始條件:a是 n 維陣列,e為元素變數,隨後是 n 個下標值。

操作結果:若下標不超界,則將 e 的值賦給所所指定的a 的元素,並返回ok。

5、**實現:

#include#include#include//標準標頭檔案,提供巨集 va_strat、va_arg 和 va_end,

//用於訪問變長參數列

//巨集定義

#define ok 1

#define error 0

#define overflow -2

#define underflow -1

typedef int elemtype;

typedef int status;

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

typedef structarray;

//-------基本操作說明---------

//1、構造陣列a,並返回ok

//status initarray(array &a,int dim,...)

//2、銷毀陣列 a

//status destroyarray(array &a)

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

//status locate(array a,va_list ap,int &off)

//4、a是n維陣列,e是元素變數,隨後是n個下標值

// 若各下標不超界,則 e 賦值為所指定的a的元素值,並返回 ok

// status value(array a,elemtype &e, ...)

//5、將e的值賦給所指定的 a的元素值

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

//---------基本操作的演算法描述-----------

//1、構造陣列a,並返回ok

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

//2、銷毀陣列 a

status destroyarray(array &a)

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

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

return ok;

}//4、a是n維陣列,e是元素變數,隨後是n個下標值

// 若各下標不超界,則 e 賦值為所指定的a的元素值,並返回 ok

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

//5、a是n維陣列,e為元素變數,隨後是n個下標值

//若下標不超界,則將e的值賦給所指定的 a的元素值,並返回ok

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

//----------主函式---------

void main(),};

initarray(a,2,2,3);

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

printf("各維的長度是:\n");

for(int index=0 ;index

資料結構 第五章 陣列與廣義表

陣列和廣義表,可看成是一種擴充套件的線性資料結構。1 陣列 1從邏輯結構上看,陣列可以看成是一般線性表的擴充。一維陣列即為線性表,二維陣列可定義為 其資料元素為一維陣列 線性表 的線性表。2陣列是一組有固定個數的元素的集合。對陣列的操作不像對線性表的操作那樣可以在表中任意乙個合法的位置插入或刪除乙個...

資料結構期末複習第五章陣列和廣義表

資料結構期末複習第五章 陣列和廣義表 二維陣列a m n 按行優先 定址計算方法,每個陣列元素佔據d 個位址單元。設陣列的基址為loc a11 loc aij loc a11 i 1 n j 1 d 設陣列的基址為loc a00 loc aij loc a00 i n j d 二維陣列a m n 按...

第五章 陣列

陣列就是一組相同型別的變數,它們往往都是為了表示同一批物件的統一屬性,如乙個班級所有同學的身高 全球所有國家的人口數等。陣列可以是一維的,也可以是二維或多維的。使用一維陣列時,一般是從0開始編號,s i 就表示第i 1個同學的身高,i稱為下標變數。例如讀人50個同學的身高,語句就可以這樣書寫 for...