数据结构之顺序表实现

语言:C++
注意点:create函数里面最后输入-1退出时,-1这个值也存入了顺序表里面,当然顺序表的长度也就自然的加1,也就是顺序表的最后一个值存的是-1。

#include<iostream>

using namespace std;

#define maxsize 100
#define elemtype int

//动态定义顺序表结构体
typedef struct{
    elemtype *elem;
    int length;
}Sqlist;

//初始化顺序表
bool init(Sqlist &l)
{
    l.elem=new elemtype[maxsize];
    if(!l.elem) return false; //初始化失败
    l.length=0; //初始化为0
    return true;
}

//创建顺序表
bool create(Sqlist &l)
{
    int x,i=0; //x变量用来接收输入的数据,i变量用来记录地址
    while(x!=-1)
    {
        if(l.length==maxsize)
        {
            cout<<"顺序表已满";
            return false;
        }
        cin>>x;
        l.elem[i++]=x;
        l.length++;
    }
    return true;
}

//取值
bool getValue(Sqlist l,int i,int &e)
{
    if(i<1||i>l.length) return false; //判断下标是否规范
    e=l.elem[i-1];
    return true;
}

//查找
int getLocate(Sqlist &l,int e)
{
    for(int i=0;i<=l.length-1;i++)
        if(l.elem[i]==e)
        {
            cout<<i<<endl;
            return i+1;
        }
    return -1; //未找到返回-1
}

//插入
bool insertVlaue(Sqlist &l,int i,int e)
{
    if(i<1||i>l.length) return false;
    for(int j=l.length-1;j>=i-1;j--)
    {
        l.elem[j+1]=l.elem[j];
    }
    l.elem[i-1]=e;
    l.length++;
    return true;
}

//删除
bool deleteValue(Sqlist &l,int i,int &e)
{
    if(i<1||i>l.length) return false;
    e=l.elem[i-1];
    for(int j=i-1;j<l.length-1;j++)
    {
        l.elem[j]=l.elem[j+1];
    }
    l.length--;
    return true;
}

//查看顺序表元素
void view(Sqlist l)
{
    for(int j=0;j<=l.length-1;j++)
    {
        cout<<l.elem[j]<<" ";
    }
}

int main()
{
    Sqlist l;
    int e;
    init(l);
    create(l);
    //测试查找函数
    //int loc=getLocate(l,2);
    //cout<<loc<<endl;

    //测试取值函数
    //getValue(l,2,e);
    //cout<<e;

    //测试增加函数
    //insertVlaue(l,2,3);
    //view(l);

    //测试删除函数
    deleteValue(l,2,e);
    view(l);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值