資料結構與演算法之 線性表的順序儲存結構

2021-06-20 09:58:16 字數 2362 閱讀 2547

arraylist.h

/* 線性表的順序儲存結構 */

#define maxsize 10 //儲存空間初始分配量

typedef int elemtype ; //elemtype型別根據實際情況而定,這裡假設為int

typedef struct

arraylist;

#define ok 1

#define error 0

typedef int status;

/* 線性表通用操作 */

status initlist(arraylist *l); //建立乙個空的線性表l

status listempty(arraylist l); //若線性表為空返回true,否則返回false

status clearlist(arraylist *l); //將線性表清空

status getelem(arraylist l,int i,elemtype *e); //將線性表l中第i個位置元素值返回給e

status listdelete(arraylist *l,int i,elemtype *e); //刪除線性表l中第i個位置元素,並用e返回值值

int listlength(arraylist l); //返回線性表l的元素個數

arraylist.c

#include #include #include #include "arraylist.h"

int main(void)

printf("遍歷所有元素:");

int len = listlength(l);

for(int i=0;idata,0,sizeof(elemtype)*maxsize);

l->length = 0;

return ok;

}//若線性表為空返回true,否則返回false

status listempty(arraylist l)

//將線性表清空

status clearlist(arraylist *l)

//將線性表l中第i個位置元素值返回給e

status getelem(arraylist l,int i,elemtype *e)

*e = l.data[i];

return ok;

}int locateelem(arraylist l,elemtype e)

if(i<0||i>l->length)

else if(ilength && l->lengthlength;j>i;j--)

}l->data[i] = e;

l->length ++;

return ok;

}//刪除線性表l中第i個位置元素,並用e返回值值

status listdelete(arraylist *l,int i,elemtype *e)

if(i<0||i>l->length)

*e = l->data[i];

if(ilength) }

l->length --;

return ok;

}//返回線性表l的元素個數

int listlength(arraylist l)

測試執行:

[yanhua@localhost chap03]$ gcc --std=c99 arraylist.c 

[yanhua@localhost chap03]$ ./a.out

length==0

是空的線性表已滿!

線性表已滿!

線性表已滿!

遍歷所有元素:[0]3,[1]13,[2]33,[3]23,[4]43,[5]53,[6]63,[7]73,[8]83,[9]93,

索引2位置的元素是:33

查詢53的索引位置是:5

刪除第6位後

[0]3,[1]13,[2]33,[3]23,[4]43,[5]53,[6]73,[7]83,[8]93,

結論:線性表的順序儲存結構時間複雜度:

隨機查詢時間複雜度為o(1)

插入和刪除由於要移動元素,時間複雜度為o(n)

優缺點:

優點:·無須為表示表中元素之間的邏輯關係而增加額外儲存空間

·可以快速地訪問表中任意位置的元素

缺點:·插入和刪除操作需要移動大量元素

·當線性表長度變化較大時,難以確定儲存空間的容量

·造成儲存空間的「碎片」

mysql 線性表 資料結構 線性表之順序線性表

public class sequencelist else stringbuilder sb new stringbuilder for int i 0 i size i int len sb.length public class sequencelisttest public static v...

資料結構線性表之順序表

純手打順序表相關操作,包括順序表的建立 初始化 輸出 插入 刪除 銷毀等,僅供自己回顧使用,可能會有不對的或者不恰當的地方望大家指正,共同學習。如下 資料結構順序表 include include include define maxsize 100 using namespace std type...

資料結構 線性表之順序表

線性表是包含若干資料元素的乙個線性序列 記為 l a0,ai 1,ai,ai 1 an 1 l為表名,ai 0 i n 1 為資料元素 n為表長,n 0 時,線性表l為非空表,否則為空表。線性表l可用二元組形式描述 l d,r 即線性表l包含資料元素集合d和關係集合r d r 關係符在這裡稱為有序對...