线性顺序表的简单操作

来源:互联网 发布:看门狗2低配优化补丁 编辑:程序博客网 时间:2024/05/02 02:31
/*程序的版权和版本声明部分:*Copyright(c)2014,烟台大学计算机学院学生*All rights reserved.*文件名称:*作者:田成琳*完成日期:2014 年 9 月 2 日*版本号:v1.0*对任务及求解方法的描述部分:*问题描述:线性顺序表的简单应用*程序输入*程序输出:*问题分析:*算法设计:*/#include<iostream>#include<cstdlib>using namespace std;const int MaxSize=50;       //顺序表中最多元素个数typedef struct{int data[MaxSize];  //存放顺序表中元素int length;         //存放顺序表长度}SqList;void InitList(SqList *&L);       //初始化线性表,构造空线性表Lvoid CreateList(SqList *L,int a[],int n);//建立顺序表void DestroyList(SqList *&L);    //销毁线性表,释放L占用的空间bool ListEmpty(SqList *L);       //判断线性表是否为空int ListLength(SqList *L);       //返回线性表元素个数void DisplayList(SqList *L);     //输出线性表int GetElem(SqList *L,int i,int &e);//求线性表中某个元素值,e返回该数据int LocateElem(SqList *L,int e);    //返回线性表中与e相等的元素位置bool ListInsert(SqList *L,int i,int e);//在第i(1<=i<=n)插入元素e到线性表bool ListDelete(SqList *L,int i);//,int &e);//删除数据元素,并用e返回值void InitList(SqList *L){L=(SqList *)malloc(sizeof(SqList));//分配存放线性表的空间L->length=0;                   //空线性表长度设为0}void CreateList(SqList *L,int a[],int n){    for(int i=0;i<n;i++)        L->data[i]=a[i];    L->length=n;}void DestroyList(SqList *&L){free(L);}bool ListEmpty(SqList *L){return(L->length==0);}int ListLength(SqList *L){return(L->length);}void DisplayList(SqList *L){for(int i=0;i<L->length;i++)cout<<L->data[i]<<" ";  //遍历输出cout<<endl;}int GetElem(SqList *L,int i,int &e){if(i<1||i>L->length)cout<<"输入数据出错!"<<endl;e=L->data[i-1];return e;}int LocateElem(SqList *L,int e){int i=0;while(i<L->length&&L->data[i]!=e)i++;if(i>L->length)return 0;    //未找到返回0elsereturn i+1;  //找到返回逻辑序号}bool ListInsert(SqList *L,int i,int e){int j;if(i<1||i>L->length+1)return false;    //参数错误i--;    //将顺序表逻辑序号转为物理序号for(j=L->length;j>i;j--)L->data[j]=L->data[j-1];//将i及后面元素后移一个位置L->data[i]=e;  //插入元素eL->length++;   //长度加1return true;}bool ListDelete(SqList *L,int i)//,int &e){    int j;if(i<1||i>L->length+1)return false;    //参数错误i--;    //将顺序表逻辑序号转为物理序号//e=L->data[i];for(j=i;j<L->length-1;j++)L->data[j]=L->data[j+1];//将i及后面元素前移一个位置L->length--;   //长度减1return true;}int main(){    int n,a[MaxSize],e,position;    SqList L;    bool flag;    cout<<"请输入元素个数:"<<endl;cin>>n;cout<<"请输入元素数据:"<<endl;    for(int i=0;i<n;i++)        cin>>a[i];    CreateList(&L,a,n);    flag=ListEmpty(&L);    if(flag)        cout<<"线性表为空!"<<endl;    else        cout<<"线性表不为空,线性表的长度为:"<<ListLength(&L)<<endl;    cout<<"线性表的所有元素为:"<<endl;DisplayList(&L);    cout<<"请输入你想看到的线性表中第几个数:"<<endl;    cin>>n;    cout<<"线性表中第"<<n<<"个数为:"<<GetElem(&L,n,e)<<endl;    cout<<"请输入你想查找的元素值:"<<endl;    cin>>n;    cout<<"线性表中查找的第一个元素值在第"<<LocateElem(&L,n)<<"位。"<<endl;    cout<<"请输入插入元素位置及元素大小:"<<endl;    cin>>position>>n;    ListInsert(&L,position,n);    cout<<"插入完成后线性表变为:"<<endl;DisplayList(&L);    cout<<"请输入要删除的元素位置:"<<endl;    cin>>n;    ListDelete(&L,n);    cout<<"删除完成后线性表变为:"<<endl;DisplayList(&L);    return 0;}


运行结果:

0 0