線性表的順序儲存結構

2021-07-05 18:43:20 字數 4672 閱讀 1099

順序儲存定義

線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素

順序儲存結構

儲存空間的起始位置: 陣列node

線性表的最大容量: 陣列長度maxsize

線性表的當前長度: length

#define maxsize 20

typedef struct _tag_list

;int length;

} list;

獲取元素操作

判斷線性表是否合法

判斷位置是否合法

直接通過陣列下標的方式獲取元素

插入元素操作

判斷線性表是否合法

判斷插入位置是否合法

把最後乙個元素到插入位置的元素後移乙個位置

將新元素插入

線性表長度加1

刪除元素演算法

判斷線性表是否合法

判斷刪除位置是否合法

將元素取出

將刪除位置後的元素分別向後移動乙個位置

線性表長度減1

小結優點

無需為線性表中的邏輯關係增加額外的空間

可以快速的獲取表中合法位置的元素

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

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

seqlist.h

#ifndef

_seqlist_h_

#define

_seqlist_h_

typedef

void

seqlist;

typedef

void

seqlistnode;

/*該方法用於建立並且返回乙個空的線性表*/
seqlist*seqlist_create(int

capacity);

/*該方法用於銷毀乙個線性表list*/
void

seqlist_destory(seqlist*list);

/*該方法用於講乙個顯示表list中的所有元素清空,使得線性表回到建立時的初始狀態*/
void

seqlist_clear(seqlist*list);

/*該方法用於返回乙個線性表list中的所有元素個數*/
int

seqlist_length(seqlist*list);

/*該方法用於返回乙個線性表list中的最大容量*/
int

seqlist_capacity(seqlist*list);

/*該方法用於向乙個線性表list的pos位置處插入新元素node返回值為1表示摻入成功,0表示插入失敗*/
int

seqlist_insert(seqlist*list,

seqlistnode*node,

intpos);

/*該方法用於獲取乙個線性表list的pos位置處的元素返回值為pos位置處的元素,null表示獲取失敗*/
seqlistnode*seqlist_get(seqlist*list,

intpos);

/*該方法用於刪除乙個線性表list的pos位置處的元素返回值為被刪除的元素,null表示刪除失敗*/
seqlistnode*seqlist_delete(seqlist*list,

intpos);

#endif

seqlist.c

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

#include

#include

"seqlist.h"

/*資料元素型別*/
typedef

unsigned

inttseqlistnode;

/*代表鍊錶的頭*/
typedef

struct

_tag_seqlist

tseqlist;

/*該方法用於建立並且返回乙個空的線性表*/
seqlist*seqlist_create(int

capacity)

if(ret!=

null)

return

ret;

}
/*該方法用於銷毀乙個線性表list*/
void

seqlist_destory(seqlist*list)

/*該方法用於講乙個顯示表list中的所有元素清空,使得線性表回到建立時的初始狀態*/
void

seqlist_clear(seqlist*list)

}
/*該方法用於返回乙個線性表list中的所有元素個數*/
int

seqlist_length(seqlist*list)

return

ret;

}
/*該方法用於返回乙個線性表list中的最大容量*/
int

seqlist_capacity(seqlist*list)

return

ret;

}
/*該方法用於向乙個線性表list的pos位置處插入新元素node返回值為1表示摻入成功,0表示插入失敗*/
int

seqlist_insert(seqlist*list,seqlistnode*node,

intpos)

/*3,從最後乙個元素開始到第pos個位置分別將他們都後移動乙個位置*/

for(i=slist->length;i>pos;i--)

/*4,

將新元素插入(儲存乙個位址的值)*/

slist->node[i]=(tseqlistnode)node;

/*5,

鍊錶長度加1*/

slist->length++;
}

return

ret;

}
/*該方法用於獲取乙個線性表list的pos位置處的元素返回值為pos位置處的元素,null表示獲取失敗*/
seqlistnode*seqlist_get(seqlist*list,

intpos)

return

ret;

}
/*該方法用於刪除乙個線性表list的pos位置處的元素返回值為被刪除的元素,null表示刪除失敗*/
seqlistnode*seqlist_delete(seqlist*list,

intpos)

/*5,

長度減1*/

slist->length--;
}

return

ret;

}

main.c

#include

#include

#include

"seqlist.h"

/*

runthis

program

using

theconsole

pauser

oradd

your

owngetch,

system("pause")

orinput

loop

*/

int

main(int

argc,

char

*argv)

printf("delete\n");

/*一次刪除並且答應出刪除的元素*/

while(seqlist_length(list)>

0)

/*刪除鍊錶,防止記憶體洩露*/

seqlist_destory(list);

return

0;

}

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

1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...

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

線性表的順序儲存結構 線性結構是乙個資料元素的有序 次序 集。集合中必存在唯一的乙個 第一元素 集合中必存在唯一的乙個 最後元素 除最後元素外,均有唯一的後繼 除第一元素外,均有唯一的前驅。adt list 資料關係 r1 adt list 容易混的概念 引用符號 和引用型操作沒有關係 加工型操作 ...

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

include include using namespace std define ok 1 define error 0 define list init size 100 define listincrement 10 typedef int status typedef int elemty...