C++数据结构-顺序表初始化及其增删改查

#include <iostream>
#include <cstdlib>
#define MAXSIZE 20  //顺序表的最大长度
#define N 11
using namespace std;

/**
*实现顺序表的初始化和增删改查
*注意:该程序默认顺序表的第0个位置不用,元素从1开始存放
*/

typedef struct
{
    int *elem; //存一个地址,动态分配空间
    int lenth;
}Sqlist;

/****************顺序表初始化函数****************/
void initlist(Sqlist &l)        //用引用
{
    int nums[N]={0,1,2,3,4,5,6,7,8,9,10};
    l.elem = new int[MAXSIZE];  //后面要delete
    if(l.elem == NULL )
    {
        exit(0);                //非正常退出,要引入头文件<cstdlib>
    }else
    {
        for(int i=0;i<N;i++)
        {
             l.elem[i]=nums[i];
        }
        l.lenth=N-1;
    }
}
/****************顺序表查找函数****************/
//查找到就返回元素下标位置,没找到就返回0
int Find_Sq(Sqlist &l , int e) //e是要查找的值
{
    int i=1;
    while(i<=l.lenth && e != l.elem[i])
        i++;
    if(i != l.lenth+1) //表示跳出循环,还没找到,此时i为l.lenth+1
        return i;
    else
        return 0;
}
/****************顺序表插入函数****************/
int Inser_Sq(Sqlist &l , int pos , int num)
{
    if(pos<1 || pos >l.lenth)
        return 0;//插入位置错误
    if(l.lenth >= MAXSIZE -1)
        return 0;//空间已满,无法插入
    for(int i=l.lenth ; i>=pos ; i--)
        l.elem[i+1]=l.elem[i];
    l.elem[pos]=num;
    l.lenth++;
    return 1;
}
/****************顺序表删除函数****************/
int Dele_Sq( Sqlist &l , int pos , int &e) //e保存要删掉的值,所以用引用
{
    e=l.elem[pos];   //e保存要删掉的值
    if(pos<1 || pos >l.lenth)
        return 0;
    for(int i = pos ; i<l.lenth ; i++)
        l.elem[i]=l.elem[i+1];
    l.lenth --;
    return 1;
}
/****************顺序表打印函数****************/
void Print_Sq(Sqlist &l)
{
    for(int i=1;i<=l.lenth;i++)
    {
        cout<<l.elem[i]<<endl;
    }
}
int main()
{
/******************************************/
    //初始化
    Sqlist q;     //创建顺序表
    initlist(q);  //初始化顺序表
/******************************************/
    //顺序表查找元素(表中查找元素99)
    int result = Find_Sq(q,99);
    if(result == 0)
        cout<<"没有找到"<<endl;
    else
        cout<<"找到了,数组下标为"<<result<<endl;
/******************************************/
    //顺序表插入元素(在第三个位置插入数据666)
    Inser_Sq(q , 3 , 666);
/******************************************/
    //顺序表删除元素(把第5个元素删除,并把删除的值保存在e中)
    int e; //接受保存将被删除的元素
    Dele_Sq(q,5,e);
/******************************************/
    Print_Sq(q);
    delete []q.elem;
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值