順序儲存定義
線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。
儲存空間的起始位置:陣列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...