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;
  }