c++リニア・テーブルのシーケンス・テーブルの実装(データ構造カリキュラム・ジョブ)
22792 ワード
一、テーマ紹介
シーケンステーブルの作成、初期化、値付け、挿入、削除、データによる要素位置の検索、要素位置によるデータの検索、クリア、削除を実現
の操作は、使用可能なメニューオプションで行います.
二、ソースプログラムコード
シーケンステーブルの作成、初期化、値付け、挿入、削除、データによる要素位置の検索、要素位置によるデータの検索、クリア、削除を実現
の操作は、使用可能なメニューオプションで行います.
二、ソースプログラムコード
#include
#define MAXSIZE 100
using namespace std;
typedef int ElemType;
typedef struct List
{
ElemType *elem;
int length;
}Sqlist;
void InitList(Sqlist &L);
void DestroyList(Sqlist &L);
void ClearList(Sqlist &L);
void GetLength(Sqlist L);
void isEmpty(Sqlist L);
void Getelem(Sqlist &L,int i);
void Locateelem(Sqlist &L,ElemType e);
void ListInsert(Sqlist &L,int i,ElemType e);
void ListDelete(Sqlist &L,int i);
void fuzhi(Sqlist &L);
void print(Sqlist &L);
void mainscreen();
int main()
{
mainscreen();
return 0;
}
void InitList(Sqlist &L)
{
L.elem=new ElemType[MAXSIZE];
if(!L.elem){
cout<<" "<<endl;
}
L.length=0;
cout<<" "<<endl;
}
void mainscreen()
{
int flag=0;
while(flag==0)
{
cout<<" "<<endl;
cout<<"\t1 "<<endl;
cout<<"\t2 "<<endl;
cout<<"\t3 "<<endl;
cout<<"\t4 "<<endl;
cout<<"\t5 "<<endl;
cout<<"\t6 "<<endl;
cout<<"\t7 "<<endl;
cout<<"\t8 "<<endl;
cout<<"\t9 "<<endl;
cout<<"\t10 "<<endl;
cout<<"\t11 "<<endl;
int s;
cin>>s;
if(1<=s<=10)
{
switch(s)
{
case 1:
Sqlist L;
InitList(L);
break;
case 2:
fuzhi(L);
break;
case 3:
int a;
ElemType e;
cout<<" "<<endl;
cin>>a;
cout<<" "<<endl;
cin>>e;
ListInsert(L,a,e);
break;
case 4:
int b;
cout<<" "<<endl;
cin>>b;
ListDelete(L,b);
break;
case 5:
ClearList(L);
break;
case 6:
DestroyList(L);
break;
case 7:
ElemType f;
cout<<" "<<endl;
cin>>f;
Locateelem(L,f);
break;
case 8:
int c;
cout<<" "<<endl;
cin>>c;
Getelem(L,c);
break;
case 9:
GetLength(L);
break;
case 10:
print(L);
break;
case 11:
flag=1;
cout<<" "<<endl;
exit(0);
break;
}
}
}
}
void DestroyList(Sqlist &L)
{
if(L.elem)
{
delete[] L.elem;
cout<<" "<<endl;
}
else{
cout<<" "<<endl;
}
}
void ClearList(Sqlist &L)
{
L.length=0;
cout<<" "<<endl;
}
void GetLength(Sqlist L)
{
cout<<" "<" "<<endl;
}
void isEmpty(Sqlist L)
{
if(L.length==0)
cout<<" "<<endl;
else
cout<<" "<<endl;
}
void Getelem(Sqlist &L,int i)
{
ElemType e;
if(i<1||i>L.length){
cout<<" "<<endl;
}
else{
e=L.elem[i-1];
cout<<" "<<endl;
cout<<" "<" "<endl;
}
}
void Locateelem(Sqlist &L,ElemType e)
{
int i=0;
int flag=0;
for(i=0;i)
{
if(L.elem[i]==e){
cout<<" "<<endl;
cout<" "<1<<" "<<endl;
flag=1;
}
}
if(flag==0)
cout<<" "<<endl;
}
void ListInsert(Sqlist &L,int i,ElemType e)
{
int j=0;
if(i<1||i>L.length)
{
cout<<" "<<endl;
}
if(L.length==MAXSIZE)
{
cout<<" , "<<endl;
}
for(j=L.length-1;j>=i-1;j--)
{
L.elem[j+1]=L.elem[j];
}
L.elem[i-1]=e;
++L.length;
cout<<" "<" "<<endl;
}
void ListDelete(Sqlist &L,int i)
{
int j=0;
if(i<1||i>L.length)
{
cout<<" "<<endl;
}
for(j=i;j<=L.length-1;j++)
{
L.elem[j-1]=L.elem[j];
}
--L.length;
cout<<" "<" "<<endl;
}
void fuzhi(Sqlist &L)
{
int n,m;
cout<<" "<<endl;
cin>>n;
for(int i=0;i)
{
cout<<" "<1<<" "<<endl;
cin>>m;
L.elem[i]=m;
L.length++;
}
cout<<" "<<endl;
}
void print(Sqlist &L)
{
for(int i=0;i)
{
cout<<" "<1<<" :";
cout<endl;
}
cout<<" "<<endl;
}