動態順序表實現

2021-10-21 02:54:59 字數 2002 閱讀 9222

/*

動態順序表:

核心還是利用陣列來儲存線性表的資料,

與靜態陣列不同的是,該實現方法能夠動態的

容,比靜態的陣列要容易.

*/#include

#include

#define initsize 10

#define null null

typedef

int elemtype;

typedef

struct

seqlist;

//初始化

bool initlist

(seqlist *l)

l->maxsize=initsize;

l->length=0;

return true;

}//增加長度

bool insercelist

(seqlist *l,

int len)

if(len<=l->maxsize)

seqlist *tem;

l->data=

(elemtype *

)malloc

(sizeof

(elemtype)

*(initsize+len));

if(l->data==null)

int i;

for(i=

0;ilength;i++

)free

(tem)

; l->maxsize+

=len;

return true;

}//遍歷

bool printlist

(seqlist l)

printf

("\n");

return true;

}//判空

bool isempty

(seqlist l)

//按位查詢,引數i為元素位置,e為返回元素.

bool getelem

(seqlist l,

int i,elemtype *e)

*e=l.data[i-1]

;return true;

}//按值查詢

bool locateelem

(seqlist l,elemtype e,

int*index)

}*index=-1

;return false;

}//在i的位置插入資料(前插法),後插法可轉換成這個方法.

bool listinsert

(seqlist *l,

int index,elemtype e)

//判斷插入位置是否合法.

if(index<1)

int i;

for(i=l->length;i>index-

1;i--

) l->data[index-1]

=e;//這裡的下標最好用輸入的位置,不用迴圈結束的值,避免在空表的時候出現錯誤.

l->length++

;return true;

}//刪除

bool listdelete

(seqlist *l,

int index,elemtype *e)

*e=l->data[index-1]

;//printf("%d\n",*e);

int i;

for(i=index;ilength;i++)

l->length--

;return true;

}//逆序

bool reverselist

(seqlist *l)

for(i=

0;i<=

(l->length)/2

;i++

)return true;

}//main()

intmain

(int argc,

char

*ar**)

動態實現順序表

順序表是在計算機記憶體中以 陣列的形式儲存的線性表,是指用一組位址連續的 儲存單元 依次儲存 資料元素 的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的 儲存單元中。下面來進行順序表的動態實現 標頭檔案 ifndef seqlist ...

實現動態順序表

標頭檔案seqlist.h中 pragma once include include typedef int datatype typedef struct seqlist seqlist 列印順序表 void printseqlist seqlist pseq printf n 增大容量 void...

實現動態順序表

靜態順序表和動態順序表之間的區別就是靜態順序表的儲存大小一旦設定好之後便不能修改 顯然動態順序表採用的是動態分配記憶體,容量是可以增加的,當然動態順序表要比靜態順序表多增加乙個監測容量的引數,每當當前容量存滿的時候就要觸發擴容機制,實現動態開闢記憶體。由於兩者差別不是很大,這裡我就只實現動態順序表,...