データ構造---シーケンステーブルの実装(C言語版)
2924 ワード
ここで我々の目的は簡単にシーケンステーブルを実現することである:シーケンステーブルを初期化し、5個の数を挿入して出力し、2と6がシーケンステーブルにあるかどうかを検索し、3番目の数を取り出し、最後に3番目の数を削除する
操作プロセスは次のとおりです.
1.はじめに前処理
2.初期化
3.挿入
4.値を取る
5.検索
6.削除
7.出力関数:順序テーブルが実装されているかどうかを確認するために、現在の順序テーブルのすべての要素を印刷する出力関数を書きました.
これで、シーケンステーブルの機能は大きく変わりません.完全なコードは以下の通りです.
操作プロセスは次のとおりです.
1.はじめに前処理
#include
#define maxn 100
typedef int Status;
using namespace std;
typedef struct{
int *elem;
int length;
}SqList;
2.初期化
//
Status InitList(SqList &l){
l.elem = new int(maxn);
if(!l.elem)
exit(-2);
l.length = 0;
return 1;
}
3.挿入
// ( e i )
Status ListInsert(SqList &l,int i,int e){
if(i<1||i>l.length+1)
return 0;
if(l.length==maxn)
return 0;
for(int j=l.length-1;j>=i-1;j--){
l.elem[j+1]=l.elem[j];
}
l.elem[i-1]=e;
l.length++;
return 1;
}
4.値を取る
// i (1<=i&&i<=l.length)
Status GetElem(SqList &l,int i,int &e){
if(i<1||i>l.length)
return 0;
e = l.elem[i-1];
return 1;
}
5.検索
// ( , , 0)
int LocateElem(SqList &l,int e){
for(int i=0;i
6.削除
// ( i )
Status ListDelete(SqList &l,int i){
if(i>l.length||i<1)
return 0;
for(int j=i;j<=l.length-1;j++){
l.elem[j-1]=l.elem[j];
}
l.length--;
return 1;
}
7.出力関数:順序テーブルが実装されているかどうかを確認するために、現在の順序テーブルのすべての要素を印刷する出力関数を書きました.
//
Status PrintList(SqList &l){
if(l.length==0)
return 0;
printf(" :");
for(int i=0;i
これで、シーケンステーブルの機能は大きく変わりません.完全なコードは以下の通りです.
#include
#define maxn 100
typedef int Status;
using namespace std;
typedef struct{
int *elem;
int length;
}SqList;
//
Status InitList(SqList &l){
l.elem = new int(maxn);
if(!l.elem)
exit(-2);
l.length = 0;
return 1;
}
// i (1<=i&&i<=l.length)
Status GetElem(SqList &l,int i,int &e){
if(i<1||i>l.length)
return 0;
e = l.elem[i-1];
return 1;
}
// ( , , 0)
int LocateElem(SqList &l,int e){
for(int i=0;il.length+1)
return 0;
if(l.length==maxn)
return 0;
for(int j=l.length-1;j>=i-1;j--){
l.elem[j+1]=l.elem[j];
}
l.elem[i-1]=e;
l.length++;
return 1;
}
// ( i )
Status ListDelete(SqList &l,int i){
if(i>l.length||i<1)
return 0;
for(int j=i;j<=l.length-1;j++){
l.elem[j-1]=l.elem[j];
}
l.length--;
return 1;
}
//
Status PrintList(SqList &l){
if(l.length==0)
return 0;
printf(" :");
for(int i=0;i