zoukankan      html  css  js  c++  java
  • 编程菜鸟的日记-初学尝试编程-顺序表的基本操作

    #include <iostream>
    using namespace std;
    typedef int ElemType;
    #define Maxsize 100
    //顺序表的两个要素:data和length

    typedef struct
    {
     ElemType data[Maxsize];
     int length;
    }SqList;
    //1.创建线性表
    void CreateList(SqList *&L,ElemType a[], int n)//注意引用的使用
    {
     if(n>Maxsize)
      throw"上溢";
     else
     {
      for(int i=0;i<=n-1;i++)
      {
       cin>>a[i];
       L->data[i]=a[i];
      }
      L->length=n;
     }
    }
    //2.初始化线性表
    void InitList(SqList *&L)
    {
     L=(SqList *)malloc(sizeof(SqList));//分配存放线性表的空间
     L->length=0;
    }
    //3.销毁线性表
    void Destory(SqList *&L)
    {
     free(L);
    }
    //4.判断表是否为空,空返回1,否则返回0
    int ListEmpty(SqList *&L)
    {
     return(L->length==0);
    }
    //5.判断表是否满
    int ListFull(SqList *&L)
    {
     if(L->length==Maxsize)
      return 1;
     else
      return 0;
    }
    //6.将e插入表中位置i
    void Insert(SqList *&L,int i,ElemType e)
    {
     if(L->length>=Maxsize)
      throw"上溢";
     if(i<1||i>L->length+1)
      throw"插入位置非法";
     else
     {
      for(int j=L->length-1;j>=i-1;j--)
      {
       L->data[j+1]=L->data[j];
      }
      L->data[i-1]=e;
      L->length++;
     }
    }
    //7.删除表中位置i的元素
    ElemType Delete(SqList *L,int i)
    {
     if(L->length==0)
      throw"下溢";
     if(i<1||i>L->length)
      throw"删除位置非法";
     else
     {
      ElemType x=L->data[i-1];
      for(int j=i-1;j<=L->length-1;j++)
      {
       L->data[j]=L->data[j+1];
      }
      L->length--;
      return x;
     }
    }
    //8.获取位置i的元素
    ElemType GetElem(SqList *&L,int i)
    {
     if(i<1||i>L->length)
      throw"获取元素位置异常";
     else
     {
      ElemType x=L->data[i-1];
      return x;
     }
    }
    //9.查找第一个与e相等的元素位置
    int LocateElem(SqList *&L,ElemType e)
    {
     for(int i=0;i<=L->length-1;i++)
     {
      if(L->data[i]==e)
       return i+1;
     }
     return 0;
    }
    //10.求表长
    int ListLength(SqList *&L)
    {
     return L->length;
    }
    //11.输出表全部元素
    void DispList(SqList *&L)
    {
     if(L->length)
     {
      for(int i=0;i<=L->length-1;i++)
       cout<<i+1<<":"<<L->data[i]<<endl;
     }
    }
    void main()
    {
     SqList *L;
     //L=(SqList *)malloc(sizeof(SqList));
        InitList(L);//初始化
     ElemType a[100];
     ElemType e;
     int n,i;
     cin>>n;
     CreateList(L,a,n);
        ListEmpty(L);
     ListFull(L);
     cout<<"请输入插入位置:";
     cin>>i;
     cout<<endl;
     cout<<"请输入要插入位置"<<i<<"的元素值:";
     cin>>e;
        Insert(L,i,e);
        DispList(L);
     Delete(L,i);
        DispList(L);
        e=GetElem(L,i);
        i=LocateElem(L,e);
     cout<<i<<endl;
     ListLength(L);
        DispList(L);
     Destory(L);
     system("pause");
    }

  • 相关阅读:
    Kali之Metasploit生成apk后门控制安卓
    迅雷后台上传?干掉迅雷后台进程和服务的一个批处理
    不用第三方软件–一键开关笔记本电脑wifi热点的批处理
    【PHP】创蓝253云通讯国际短信余额查询请求demo
    【PHP】创蓝253云通讯平台国际短信API接口demo
    创蓝253云通讯平台---短信验证码接口说明
    C++调取国际短信验证码----创蓝253云通讯平台---demo
    手机空号、停机、注销,空号检测为你去除无效号码
    上市公司都被撸垮,羊毛党就真的没有办法解决了吗?
    如何用Ruby调取创蓝253短信验证码
  • 原文地址:https://www.cnblogs.com/lynnycy/p/3405754.html
Copyright © 2011-2022 走看看