順序儲存定義
線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素
順序儲存結構
儲存空間的起始位置: 陣列node
線性表的最大容量: 陣列長度maxsize
線性表的當前長度: length
#define maxsize 20
typedef struct _tag_list
;int length;
} list;
獲取元素操作
判斷線性表是否合法
判斷位置是否合法
直接通過陣列下標的方式獲取元素
插入元素操作
判斷線性表是否合法
判斷插入位置是否合法
把最後乙個元素到插入位置的元素後移乙個位置
將新元素插入
線性表長度加1
刪除元素演算法
判斷線性表是否合法
判斷刪除位置是否合法
將元素取出
將刪除位置後的元素分別向後移動乙個位置
線性表長度減1
小結優點
無需為線性表中的邏輯關係增加額外的空間
可以快速的獲取表中合法位置的元素
缺點插入和刪除操作需要移動大量的元素
當線性表長度變化較大時難以確定儲存空間的容量
seqlist.h
#ifndef_seqlist_h_
#define_seqlist_h_
typedefvoid
seqlist;
typedefvoid
seqlistnode;
/*該方法用於建立並且返回乙個空的線性表*/
seqlist*seqlist_create(intcapacity);
/*該方法用於銷毀乙個線性表list*/
voidseqlist_destory(seqlist*list);
/*該方法用於講乙個顯示表list中的所有元素清空,使得線性表回到建立時的初始狀態*/
voidseqlist_clear(seqlist*list);
/*該方法用於返回乙個線性表list中的所有元素個數*/
intseqlist_length(seqlist*list);
/*該方法用於返回乙個線性表list中的最大容量*/
intseqlist_capacity(seqlist*list);
/*該方法用於向乙個線性表list的pos位置處插入新元素node返回值為1表示摻入成功,0表示插入失敗*/
intseqlist_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"
/*資料元素型別*/
typedefunsigned
inttseqlistnode;
/*代表鍊錶的頭*/
typedefstruct
_tag_seqlist
tseqlist;
/*該方法用於建立並且返回乙個空的線性表*/
seqlist*seqlist_create(intcapacity)
if(ret!=
null)
return
ret;
}
/*該方法用於銷毀乙個線性表list*/
voidseqlist_destory(seqlist*list)
/*該方法用於講乙個顯示表list中的所有元素清空,使得線性表回到建立時的初始狀態*/
voidseqlist_clear(seqlist*list)
}
/*該方法用於返回乙個線性表list中的所有元素個數*/
intseqlist_length(seqlist*list)
return
ret;
}
/*該方法用於返回乙個線性表list中的最大容量*/
intseqlist_capacity(seqlist*list)
return
ret;
}
/*該方法用於向乙個線性表list的pos位置處插入新元素node返回值為1表示摻入成功,0表示插入失敗*/
intseqlist_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
*/
intmain(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...