リニア・テーブル・タイプの実装------シーケンス・イメージ
シーケンスマッピング:xの記憶位置とyの記憶位置との間の何らかの関係で論理関係を表す.
最も簡単なシーケンスマッピング方法は、yの記憶位置とxの記憶位置を隣接させることである.
シーケンスイメージのC言語の説明:
シーケンステーブルのストレージ構造定義
空のテーブルとして作成および初期化
テーブルLを空にする
表Lの長さを求める
表Lにおいて、要素eが初めて現れる位置を特定する.操作は正常にビットシーケンスを返し、失敗した場合は0を返します.
compare(a,b)は比較関数であり、マッチング時にtrueを返し、そうでなければfalseを返す
表Lにi番目の要素eを挿入する操作はOKに成功し、失敗した場合はERRORに戻る
表Lのi番目の要素を削除し、結果をeで返す.操作が成功してOKに戻り、失敗した場合はERRORに戻る
添付ファイル付きでダウンロード可能
最も簡単なシーケンスマッピング方法は、yの記憶位置とxの記憶位置を隣接させることである.
シーケンスイメージのC言語の説明:
シーケンステーブルのストレージ構造定義
- #define MAXSIZE 100
- // ,
- typedef struct
- {
- ElemType elem[MAXSIZE];
- int length; //
-
- } SqList; //
空のテーブルとして作成および初期化
- Status InitList(SqList &L)
- {
- // TODO (#1#):
- L.length=0;
- return OK;
- //-------------------------------------
- }
テーブルLを空にする
- Status ClearList(SqList &L)
- {
- // TODO (#1#):
- L.length=0;
- return OK;
- //-------------------------------------
- }
表Lの長さを求める
- int ListLength(SqList L)
- {
- // TODO (#1#):
- return L.length;
- //-------------------------------------
- }
表Lにおいて、要素eが初めて現れる位置を特定する.操作は正常にビットシーケンスを返し、失敗した場合は0を返します.
compare(a,b)は比較関数であり、マッチング時にtrueを返し、そうでなければfalseを返す
- int LocateElem(SqList L, ElemType e, bool (*compare)(ElemType,ElemType))
- {
- // TODO (#1#): e, compare(a,b)
- for (int j=0; j<L.length; j++)
- if ( compare(L.elem[j],e) ) return j;
- return 0;
- //-------------------------------------
- }
表Lにi番目の要素eを挿入する操作はOKに成功し、失敗した場合はERRORに戻る
- Status ListInsert(SqList &L, int i, ElemType e)
- {
- // TODO (#1#):
- int j;
- if(i<1||i>L.length+1) return ERROR;
- for(j=L.length;j>=i;j--)
- {
- L.elem[j]=L.elem[j-1];
- }
- L.elem[i-1]=e;
- ++L.length;
- return OK;
- //-------------------------------------
- }
表Lのi番目の要素を削除し、結果をeで返す.操作が成功してOKに戻り、失敗した場合はERRORに戻る
- Status ListDelete(SqList &L, int i, ElemType &e)
- {
- // TODO (#1#):
- int j;
- if(i<1||i>L.length) return ERROR;
- e=L.elem[i-1];
- for(j=i-1;j<L.length;j++)
- {
- L.elem[j]=L.elem[j+1];
- }
- --L.length;
- return OK;
- //-------------------------------------
- }
添付ファイル付きでダウンロード可能