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

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;
}
相关推荐
寻星探路4 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
lly2024066 小时前
Bootstrap 警告框
开发语言
2601_949146536 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
你撅嘴真丑6 小时前
第九章-数字三角形
算法
曹牧6 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
在路上看风景6 小时前
19. 成员初始化列表和初始化对象
c++
KYGALYX6 小时前
服务异步通信
开发语言·后端·微服务·ruby
uesowys6 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
zmzb01036 小时前
C++课后习题训练记录Day98
开发语言·c++
ValhallaCoder6 小时前
hot100-二叉树I
数据结构·python·算法·二叉树