实现顺序表的各种基本运算(利用线性表来实现)

#include<iostream>
#include<stdlib.h>
#define Maxsize 50
using namespace std;
typedef char ElemType;
typedef struct
    {
       ElemType data[Maxsize];
       int length ;
    } SqList;
int main()
{
   void InitList(SqList *&L);
   void ListInsert(SqList *&L,int i ,ElemType e);
   void DisList(SqList*L);
   void ListLength(SqList*L);
   void ListEmpty(SqList*L);
   void GetElem(SqList*L ,int i);
   void LocateElem(SqList*L ,ElemType e);
    void ListDelete(SqList*&L,int i,ElemType e);
     void DestoryList(SqList*&L);
cout<<" ============输入序号来运行各种步骤========="<<endl;
cout<<"1:初始化线性表  ";
cout<<"2:采用尾插法依次插入元素a,b,c,d,e"<<endl;
cout<<"3:输出线性表   ";
cout<<"4:输出线性表长度"<<endl;
cout<<"5:判断线性表是够为空  ";
cout<<"6:输出线性表的第3个元素"<<endl;
cout<<"7:输出元素a的位置  ";
cout<<"8:在第4个元素位置上插入元素f"<<endl;
cout<<"9:输出线性表L   ";
cout<<"10:删除L的第3个元素"<<endl;
cout<<"11:输出线性表L  ";
cout<<"12:释放顺序表L"<<endl;
    SqList *L;
    int num;


    while (cin>>num)
    {
       switch (num)
        {
            case 1:  InitList(L);break;
            case 2:char temp;
                    ListInsert(L,1,temp);
                   ListInsert(L,2,temp);
                   ListInsert(L,3,temp);
                   ListInsert(L,4,temp);
                   ListInsert(L,5,temp);break;
            case 3:DisList(L);break;
            case 4:ListLength(L);break;
            case 5:ListEmpty(L);break;
            case 6:GetElem(L ,3);break;
            case 7: LocateElem(L,'a');break;
            case 8:char temp1;
                   ListInsert(L,4,temp1);break;
            case 9:DisList(L);break;
            case 10: char temp2;
                    ListDelete(L,3,temp2);break;
            case 11:DisList(L);break;
            case 12: DestoryList(L);
            default:cout<<"输入参数有错误,请输入1~12之间的数字来显示命令"<<endl;










        }
    }


return 0;


}
void InitList(SqList *&L)
{
    L=(SqList*)malloc(sizeof(SqList));
    L->length=0;
    cout<<"线性表初始化成功!"<<endl;
}
void ListInsert(SqList *&L,int i ,ElemType e)
{
    cout<<"请输入插入元素  ";
    cin>>e;
    if (i<1||i>L->length+1)
    {
        cout<<"插入越界!!!"<<endl;
    }
    else
    {


        for(int j=L->length+1;j>i;j--)
        {
            L->data[j]=L->data[j-1];
        }
         L->data[i]=e;
         L->length++;
         cout<<"插入数据元素成功,L->length="<<L->length<<endl;
    }
}
void DisList(SqList*L)
{
    for (int i=1;i<=L->length;++i)
         {
             cout<<L->data[i]<<" ";
         }
         cout<<endl;
}
void ListLength(SqList*L)
{
    cout<<"目前线性表的长度为L->length="<<L->length<<endl;
}
void ListEmpty(SqList*L)
{
    if(L->length==0)
         {
             cout<<"此时的线性表是空表!"<<endl;
         }
         else
         {
             cout<<"此时的线性表不是空表"<<endl;
         }
}
void GetElem(SqList*L ,int i)
{
if(i<1||i>L->length)
{
            cout<<"查找数据编号越界,退出!!!"<<endl;
}
else
{
  cout<<"依据编号查找到的元素为"<<L->data[i]<<endl;
}




}
void LocateElem(SqList*L ,ElemType e)


{
     int i=1;
     while (i<=L->length&&L->data[i]!=e)
     {
         i++;
     }
     if(i>L->length)
     {
         cout<<"对不起,未找到该元素"<<endl;
     }
     else
     {
         cout<<"该元素的位置为"<<i<<endl;
     }
}
void ListDelete(SqList*&L,int i,ElemType e)
{
    if(i<1||i>L->length)
    {
        cout<<"参数错误"<<endl;
    }
    else
    {
        e=L->data[i];
        for(int j=i;j<L->length;j++)
        {
            L->data[j]=L->data[j+1];
        }
        L->length--;
        cout<<"删除元素成功"<<endl;
    }
}
void DestoryList(SqList*&L)
{
    free(L);
    cout<<"销毁线性表成功"<<endl;
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值