データ構造(一)シーケンステーブル1:シーケンス格納の基本操作
リニアテーブルは最も簡単なリニア構造です.
線形テーブル:n種類の同じ要素の有限集合.(各データ間に一意の順序関係が存在する)
リニア・テーブルには、シーケンス・ストレージとチェーン・ストレージの2つのストレージ構造があります.
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<