順序表上實現的基本運算
void InitList(SeqList *L)
{\\順序表的初始化即將表的長度置為
L
}
int ListLength(SeqList *L)
{ \\求表長只需返回L
return L
}
DataType GetNode(L
{\\取表中第i個結點只需返回和L
if (i<
Error(
return L
}
【參見參考書】
(
線性表的插入運算是指在表的第i(
(a
變成長度為n+
(a
注意
① 由於向量空間大小在聲明時確定
② 當插入位置i的值為i>n或i<
(
在順序表中
n
具體過程見【 動畫演示 】
(
void InsertList(SeqList *L
{//將新結點 x插入L所指的順序表的第i個結點a i 的位置上
int j;
if (i<
Error(
if (L
Error(
for(j=L
L
L
L
}
(
① 問題的規模
表的長度L
② 移動結點的次數由表長n和插入位置i決定
算法的時間主要花費在for循環中的結點後移語句上
當i=n+
當i=
③ 移動結點的平均次數E is (n)
其中
在表中第i個位置插入一個結點的移動次數為n
p i 表示在表中第i個位置上插入一個結點的概率
p
因此
即在順序表上進行插入運算
(
線性表的刪除運算是指將表的第i(
(a
變成長度為n
(a
注意
當要刪除元素的位置i不在表長范圍(即i<
(
在順序表上實現刪除運算必須移動結點
動畫演示 】
(
void DeleteList(SeqList *L
{//從L所指的順序表中刪除第i個結點a i
int j;
if(i<
Error(
for(j=i;j<=L
L
L
}
(
①結點的移動次數由表長n和位置i決定
i=n時
i=
②移動結點的平均次數E DE (n)
其中
刪除表中第i個位置結點的移動次數為n
p i 表示刪除表中第i個位置上結點的概率
p
因此
順序表上做刪除運算
From:http://tw.wingwit.com/Article/program/sjjg/201311/23334.html