顺序表静态分配的基本操作

顺序表静态分配的基本操作

1.声明一个顺序表
2.初始化顺序表
3.插入操作
4.删除操作
5.按值查找
6.按位查找
7.求表长
8.输出表
9.判空操作
10.销毁表

所用编译器:Visual Studio Code 1.42.1 C++环境

#include <stdio.h>
#include <stdlib.h>
#define Maxsize 10
//声明一个顺序表
typedef struct{
    int data[Maxsize];
    int length;
}SqList;
//初始化顺序表
void InitList(SqList &L){
    for(int i=0;i<Maxsize;i++){
        L.data[i]=0;
    }
    L.length=0;
}
//插入操作
bool ListInsert(SqList &L,int i,int e){
    if(i<1||i>L.length+1)
        return false;
    if(L.length>=Maxsize)
        return false;
    for(int j=L.length;j>=i;j--){
        L.data[j]=L.data[j-1];
    }
    L.data[i-1]=e;
    L.length++;
    return true;
}
//删除操作
bool ListDelete(SqList &L,int i,int &e){
    if(i<1||i>L.length)
        return false;
    e=L.data[i-1];
    for(int j=i;j<L.length;j++)
        L.data[j-1]=L.data[j];
    L.length--;
    return true;  
}
//按值查找
int LocateElem(SqList L,int e){
    for(int i=0;i<L.length;i++){
        if(L.data[i]==e)
            return i+1;
    }
    return 0;
}
//按位查找
int GetElem(SqList L,int i){
    return L.data[i-1];
}
//求表长
int Length(SqList L){
    return L.length;
}
//输出表
void PrintList(SqList L){
    for(int i=0;i<L.length;i++){                
        printf("L.data[%d]=%d\n",i,L.data[i]);  
    }
}
//判空操作
void Empty(SqList L){
    if(L.length==0)
        printf("表为空\n");
    else
        printf("表不为空\n");  
}
//销毁表
void DestroyList(SqList &L){
    free(&L);
}
int main(){
    int value_delete=0;

    //基础操作
    SqList L;
    InitList(L); 
    ListInsert(L,1,5);
    ListInsert(L,2,6); 
    ListInsert(L,1,4);
    ListDelete(L,2,value_delete);  
    LocateElem(L,4);
    GetElem(L,2);
    Length(L);
    PrintList(L);
    Empty(L);

    //一些输出验证
    printf("Value_delete=%d\n",value_delete);
    printf("LocateElem=%d\n",LocateElem(L,4));
    printf("GetElem=%d\n",GetElem(L,2));
    printf("Length=%d\n",Length(L));

    //销毁表后,PrintList(L)已经无法输出表L
    DestroyList(L);
    PrintList(L);
    return 1;
}
//输出结果
L.data[0]=4
L.data[1]=6
表不为空
Value_delete=5
LocateElem=1
GetElem=6
Length=2
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值