7 線性表的順序儲存結構

2021-10-14 09:27:06 字數 3229 閱讀 6507

順序儲存定義

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

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

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

線性表的當前長度:length

判斷線性表是否合法

判斷位置是否合法

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

判斷線性表是否合法

判斷插入位置是否合法

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

將新元素插入

線性表長度加1

判斷線性表是否合法

判斷刪除位置是否合法

將元素取出

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

線性表長度減1

seqlist.h

#pragma once

#include typedef void seqlist; //此處為什麼要宣告為void,而在實現時的實際型別是typedef unsigned int tseqlistnode,因為封裝。

typedef void seqlistnode;

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

*/seqlist* seqlist_create(int capacity);

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

*/void seqlist_destory(seqlist* list);

/*該方法用於將乙個線性表seqlist中的所有元素清空

使得線性表回到建立時的初始狀態

*/void seqlist_clear(seqlist* list);

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

*/int seqlist_length(seqlist* list);

int seqlist_capacity(seqlist* list);

/*該方法用於向乙個線性表seqlist的pos位置處插入新元素node

返回值為1表示插入成功,0表示插入失敗

*/int seqlist_insert(seqlist* list, seqlistnode* node, int pos);

/*該方法用於獲取乙個線性表seqlist的pos位置處的元素

返回值為pos位置處的元素,null表示獲取失敗

*/seqlistnode* seqlist_get(seqlist* list, int pos);

/*該方法用於刪除乙個線性表seqlist的pos位置處的元素

返回值為被刪除的元素,null表示刪除失敗

*/seqlistnode* seqlist_delete(seqlist* list, int pos);

seqlist.cpp

#include

"seqlist.h"

#include

typedef

unsigned

int tseqlistnode;

//順序表的元素型別

//為什麼是unsigned int? 相容int和char等,指標也是4個位元組.

typedef

struct _tag_seqlist //順序表的型別

tseqlist;

seqlist*

seqlist_create

(int capacity)

if(ret !=

null

)return ret;

}void

seqlist_destory

(seqlist* list)

//o(1)

void

seqlist_clear

(seqlist* list)

}int

seqlist_length

(seqlist* list)

return ret;

}int

seqlist_capacity

(seqlist* list)

return ret;

}int

seqlist_insert

(seqlist* list, seqlistnode* node,

int pos)

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

) slist->node[pos]

=(tseqlistnode)

(node)

;//將元素的位址值 強制轉換 為 unsiged int, 存入pos位置處。

slist->length++;}

return ret;

}seqlistnode*

seqlist_get

(seqlist* list,

int pos)

return ret;

}seqlistnode*

seqlist_delete

(seqlist* list,

int pos)

slist->length--;}

return ret;

}

main.c

//#include "stdafx.h"

#include "seqlist.h"

void func()

printf("\n");

while (seqlist_length(list) > 0 )

seqlist_destory(list);

}int main()

優點:無需為線性表中的邏輯關係增加額外的空間 (就是乙個陣列)

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

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

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

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

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...