线性表的线性表示;初始化,输出,插入,删除,查找;

cpp 复制代码
#include <iostream>
#include <algorithm>//fill()
#define InitSize 5

using namespace std;

/*线性表:线性表示;初始化,输出,插入,删除,查找*/

//静态分配数组
typedef struct{
    int data[InitSize];
    int length_;
}Sqlist_;

//动态分配数组
typedef struct{
    int *data;
    int MaxSize,length;
}SqList;

void OutputList(SqList L){
    for(int i=0;i<L.MaxSize;i++)
        printf("%d ",L.data[i]);
    printf("\n");
}

void InitList(SqList &L){
    L.MaxSize=InitSize;
    L.length=L.MaxSize-1;
    //L.data=(int *)malloc(sizeof(int)*L.MaxSize);
    L.data=new int[L.MaxSize];
    fill(L.data,L.data+L.MaxSize,-1);
    for(int i=0;i<L.length;i++)
        L.data[i]=i;
}

//插入
bool ListInsert(SqList &L,int i,int e){
    for(int j=L.length;j>=i;j--){
        L.data[j]=L.data[j-1];
    }
    L.data[i]=e;
    L.length++;
    return true;
}

//删除
bool ListDelete(SqList &L,int i){
    for(int j=i;j<L.length-1;j++)
        L.data[j]=L.data[j+1];
    L.length--;
    fill(L.data+L.length,L.data+L.MaxSize,-1);
}

//查找
int LocateElem(SqList L,int e){
    for(int i=0;i<L.length;i++)
        if(L.data[i]==e)
            return i;
    return -1;
}

int main()
{
    /*线性表:线性表示;初始化,输出,插入,删除,查找*/
    SqList L;

    InitList(L);
    OutputList(L);

    ListInsert(L,1,9);
    OutputList(L);

    ListDelete(L,1);
    OutputList(L);

    LocateElem(L,1);
    printf("%d",LocateElem(L,1));

    return 0;
}
相关推荐
心软且酷丶21 分钟前
leetcode:263. 丑数(python3解法,数学相关算法题)
python·算法·leetcode
我最厉害。,。29 分钟前
C2远控篇&C&C++&ShellCode分离&File提取&Http协议&Argv参数&Sock管道
c语言·c++·http
Cyrus_柯31 分钟前
C++(面向对象编程——关键字)
开发语言·c++·算法·面向对象
大龄Python青年35 分钟前
C语言 函数怎样通过数组来返回多个值
c语言·开发语言
LQYYDSY40 分钟前
【C语言极简自学笔记】重讲运算符
c语言·开发语言·笔记
2013编程爱好者40 分钟前
C++二分查找
开发语言·c++·算法·二分查找
叶子椰汁41 分钟前
ORMPP链接MySQL 8.0错误
服务器·数据库·c++·mysql
电商数据girl1 小时前
【经验分享】浅谈京东商品SKU接口的技术实现原理
java·开发语言·前端·数据库·经验分享·eclipse·json
十五年专注C++开发2 小时前
QSimpleUpdater:解锁 Qt 应用自动更新的全新姿势
开发语言·c++·qt