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;
      }
  • 相关阅读:
    css的em是根据什么来写的
    向一个对象数组里面添加新的属性 + 将一个对象数组数据拿出来变成另一个对象
    微信里iphone后退不刷新问题解决方案
    进到页面后input输入框自动获取焦点
    jquery checkbox反复调用attr('checked', true/false)只有第一次生效
    js promise中如何取到[[PromiseValue]]
    js 取得当天0点 / 23:59:59 时间
    jQuery获取包括当前元素的HTML
    C++ 实现 STL 标准库和算法(二)template 编程和迭代器粗解 实验楼笔记
    我现在怎么写博客笔记?
  • 原文地址:https://www.cnblogs.com/yang2000/p/11588932.html
Copyright © 2011-2022 走看看