顺序表的简单实现

数据结构中顺序表的简单实现和一些简单操作的测试:

//顺序表简单实现
#include <iostream>
#define ElemType char
#define Maxsize 50
using namespace std;

//结构定义
typedef struct
{
        ElemType data[Maxsize];
        int length;
}SqList;

//初始化
void InitList(SqList &L)
{
        L.length=0;
}

//求指定位置的元素
int GetElem(SqList L,int i,ElemType &e)
{
        if(i<1||i>L.length)
                return 0;
        e=L.data[i-1];
        return 1;
}

//按照元素值查找
int LocateElem(SqList L,ElemType e)
{
        int i=0;
        while(i<L.length&&L.data[i]!=e) i++;
        if(i>=L.length) return 0;
        else return i+1;
}

//指定位置插入元素
int ListInsert(SqList &L,int i,ElemType e)
{
         if(i<1||i>L.length+1)
                return 0;
         i--;
         for(int j=L.length;j>i;j--)
         {
                 L.data[j]=L.data[j-1];

         }
         L.data[i]=e;
         L.length++;
         return 1;
}

//删除指定位置元素
int ListDelete(SqList &L,int i,ElemType &e)
{
        int j;
        if(i<1||i>L.length)
                return 0;
        e=L.data[i-1];
        for(j=i-1;j<L.length-1;j++)
        {
                L.data[j]=L.data[j+1];
        }
        L.length--;
        return 1;
}

int main()
{
        SqList l; ElemType e;int i;
        ElemType a[5]={'a','b','c','d','e'};
        InitList(l);
        for(i=0;i<5;i++)               //插入元素
                ListInsert(l,i+1,a[i]);
        cout<<"顺序表中的元素为:";
        for(i=0;i<l.length;i++)
                cout<<l.data[i]<<"  ";
        cout<<endl;

        GetElem(l,3,e);               //取指定位置元素
        cout<<"在顺序表位置3的元素是:"<<e<<endl;

        cout<<"b在顺序表中的位置为:   "<<LocateElem(l,'b')<<endl;//定位测试

        ListDelete(l,4,e);            //删除测试
        cout<<"删除的元素为: "<<e<<endl;
        cout<<"删除完元素之后的顺序表为:";
        for(i=0;i<l.length;i++)
                cout<<l.data[i]<<"  ";

        return 0;
}
代码运行的结果为:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值