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

  • 相关阅读:
    forin语句和document.write换行
    输入日期计算出当天是星期几
    输入半径求圆的面积和简单的ASCII码转化
    一段简单的代码用来在网页上测试javascript程序
    如何在ubuntu下修改hosts?
    如何在终端上打出货币符号和算式
    C#文件监控
    JavaScript类的写法 ( 仿jQuery )
    JavaScript类创建的几种方式
    (转)程序员的十层楼:大家都来测测你的技术层级
  • 原文地址:https://www.cnblogs.com/lynnycy/p/3405754.html
Copyright © 2011-2022 走看看