zoukankan      html  css  js  c++  java
  • c++实现线性表中的顺序表(数据结构课程作业)

    一、题目简介

    实现顺序表的创建、初始化、赋值、插入、删除、按数据查找元素位置、按元素位置查找数据、清空、删除

    的操作,以上操作用可用菜单选项完成

    二、源程序代码

    #include<iostream>
    #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<<"	1 初始化顺序表"<<endl;
        cout<<"	2 给顺序表赋值"<<endl;
        cout<<"	3 向顺序表中插入数据元素"<<endl;
        cout<<"	4 向顺序表中删除数据元素"<<endl;
        cout<<"	5 清空顺序表"<<endl;
        cout<<"	6 删除顺序表"<<endl;
        cout<<"	7 根据数据元素查询在顺序表中位置"<<endl;
        cout<<"	8 根据在顺序表中位置查询数据元素"<<endl;
        cout<<"	9 查询顺序表长度"<<endl;
        cout<<"	10 输出顺序表"<<endl;
        cout<<"	11 退出操作"<<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<<"顺序表中有"<<L.length<<"个元素"<<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<<"顺序表中第"<<i<<"个数据元素是"<<e<<endl;
            }
        }
        void Locateelem(Sqlist &L,ElemType e)
        {
            int i=0;
            int flag=0;
            for(i=0;i<L.length;i++)
            {
                if(L.elem[i]==e){
                cout<<"查找成功"<<endl;
                cout<<e<<"位于顺序表中第"<<i+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<<"插入顺序表中第"<<i<<"个数据元素成功"<<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<<"删除顺序表中第"<<i<<"个数据元素成功"<<endl;
      }
      void fuzhi(Sqlist &L)
      {
          int n,m;
          cout<<"请输入赋值的数据元素个数"<<endl;
          cin>>n;
        for(int i=0;i<n;i++)
        {
        cout<<"请输入第"<<i+1<<"的数据元素的值"<<endl;
        cin>>m;
        L.elem[i]=m;
        L.length++;
        }
        cout<<"赋值成功"<<endl;
      }
      void print(Sqlist &L)
      {
        for(int i=0;i<L.length;i++)
        {
           cout<<""<<i+1<<"的数据元素的值:";
           cout<<L.elem[i]<<endl;
        }
        cout<<"顺序表输出完成"<<endl;
      }
  • 相关阅读:
    Delphi XE5 android 蓝牙通讯传输
    Delphi XE5 android toast
    Delphi XE5 android openurl(转)
    Delphi XE5 如何设计并使用FireMonkeyStyle(转)
    Delphi XE5 android 捕获几个事件
    Delphi XE5 android listview
    Delphi XE5 android 黑屏的临时解决办法
    Delphi XE5 android popumenu
    Delphi XE5 android 获取网络状态
    Delphi XE5 android 获取电池电量
  • 原文地址:https://www.cnblogs.com/yang2000/p/11588932.html
Copyright © 2011-2022 走看看