データ構造(一)シーケンステーブル1:シーケンス格納の基本操作


リニアテーブルは最も簡単なリニア構造です.
線形テーブル:n種類の同じ要素の有限集合.(各データ間に一意の順序関係が存在する)
リニア・テーブルには、シーケンス・ストレージとチェーン・ストレージの2つのストレージ構造があります.
1.線形テーブルの定義:
#include
#include
//#include

using namespace std;

#define MAXSIZE 100
//const int MAXSIZE=(100);
void Initlist(Sqlist &l);   //      ;
void Createlist(Sqlist &l); //     
bool Isempty(Sqlist l);    //         
void Insert_elem(Sqlist &l,int i,int e);   //      i       es
void Delete_elem(Sqlist &l,int i,int *e);  //      i       e
void Clearlist(Sqlist &l);  //        
int Length(Sqlist l);       //       
int Getelem(Sqlist l,int i);  //     i      
void Locatedelem(Sqlist l,int e,int *i);  //   e        

typedef struct node{int*data;//ストレージ ベースアドレスint length;// のテーブル }Sqlist;
 
   
  

2. :

//      
void Initlist(Sqlist &l) {
	//         0
	l.data=(int *)malloc(sizeof(int));
	if(!l.data)  exit (-2);  //        
	l.length=0;    //         0
}

3. テーブルを するには:
//     
void Create(Sqlist &l) {
	//     
	int data;
	cin>>data;
	int i=0;
	while (data!=-1) {
		l.data[i]=data;
		cin>>data;
		i++;
	}
	l.length=i;
}

4. テーブルが かどうかを する:
//         
bool Isempty(Sqlist l) {
	//    =0
	if(l.length==0)  return true;
    else return false;
}

5.リニアテーブルが タンであるか かを する
//         
bool Isfull(Sqlist l) {
	//l.length>=MAXSIZE;
	if(l.length>=MAXSIZE)  return true;
	else  return true;
}

6. のi の の を める
//     i      
int Getelem(Sqlist l,int i) {
	// i      =data[i-1]
	//  i    
	int e;
	if(i<1  ||  i>l.length)  exit(-2);
	return e=l.data[i--];
}

7.// eの での を める
//   e        
int Locatedelem(Sqlist l,int e) {
	//data[i]==e,  i+1   
	for(int i=0;i

8. テーブルのi の に eを する
//      i       e
void Insert_elem(Sqlist &l,int i,int e) {
	//data[i-1]=e,
	//      i     +1
	//  i    
	//         
	if(i<1  ||  i>l.length)  exit(-2);
	else if(l.length>=MAXSIZE)  exit(-2);
	else {
		l.data[i-1]=e;
		for(int j=l.length;j>=i;j--)
			l.data[j]=l.data[j-1];
		l.length++;
	}
}

9. テーブルのi の で eを する
//      i       e
void Delete_elem(Sqlist &l,int i,int e) {
	//data[i-1]=e,
	//   i        -1
	//  i    
	//         
	if(i<1  ||  i>l.length)  exit(-2);
	else if(l.length==0)  exit(-2);
	else {
		e=l.data[i-1];
		for(int j=i;j<=l.length;j++)
			l.data[j-1]=l.data[j];
		l.length--;
	}
}

10. テーブルを にする
//     
void Clearlist(Sqlist &l) {
    l.length=0;
}

11. の さを める
//       
int Length(Sqlist l) {
    return l.length;
}

12. テーブルの //
//         
void Printflist(Sqlist l) {
    int i=0;
    while(l.data[i]) {
        cout<

13. :
int main () {
    Sqlist l;
    int e,i;
    Initlist(l);
    Create(l);
    cout<