()H(A(aa)B(b)C(cc)x)
HEAD(TAIL(HEAD(H)))=a
()略
五算法設計題
[題目分析]本題是在向量D內插入元素問題首先要查找插入位置數據x插入到第i個數據組的末尾即是第i+個數據組的開始而第i(≤i≤n)個數據組的首地址由數組s(即數組元素s[i])給出其次數據x插入後還要維護數組s以保持空間區D和數組s的正確的相互關系
void Insert(int s[]datatype D[]xint im)
//在m個元素的D數據區的第i個數據組末尾插入新數據x第i個數據組的首址由數組s給出
{if(i<1|| i>n){printf(參數錯誤)exit(0)}
if(i==n) D[m]=x // 在第n個數據組末尾插入元素
else{for(j=m;j>=s[i+];j)D[j+]=D[j]; // 第i+1個數據組及以後元素後移
D[s[i+]]=x; // 將新數據x插入
for(j=i+;j<=n;j++) s[j]++; // 維護空間區D和數組s的的關系
} //結束元素插入
m++; //空間區D的數據元素個數增
}// 算法Insert結束
[算法討論] 數據在空間區從下標開始最後一個元素的下標是m設空間區容量足夠大未考慮空間溢出問題數組s隨機存數而向量D數據插入引起數組元素移動時間復雜度是O(n)
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/sjjg/201311/23037.html