简单的顺序表

#include <iostream>
using namespace std;
#define MASIZE 20 
typedef int ElemType; 
typedef struct 
{
    ElemType date[MASIZE]; 
    int length;
}SqList; 

void initSqList(SqList* l){
    l->length=0;
}

int isFull(SqList list){
    if(list.length==MASIZE)
        return 1;
    return 0;
}

int isEmpty(SqList list){
    if(list.length==0)
        return 1;
    return 0;
}

void printSqList(SqList l){
    if(l.length == 0)
    cout<<"该线性表为空表,请先添加数据"<<endl; 
    for(int i=0;i<l.length;i++){
        cout<<l.date[i]<<endl;
    }

void insertSqlist(SqList* list,int i,ElemType e){
    if(list->length==MASIZE){
        cout<<"线性表满了"<<endl;
        return ;
    }
    if(i<1||i>list->length+1){
        cout<<"位置不合法"<<endl;
        return ;
    }
    for(int j =list->length-1;j>=i-1;j--){
        list->date[j+1] = list->date[j];
    }
    list->date[i-1]=e;
    list->length++;
}

void deleteSqlist(SqList* list,int i,ElemType *e){
    if(list->length==0){
        cout<<"表空无数据"<<endl;
        return ;
    }
    if(i<1||i>list->length){
        cout<<"位置不合法"<<endl;
        return ;
    }
    
    *e = list->date[i-1];
    for(int j =i;j<list->length;j++){
        list->date[j-1] = list->date[j];
    }
    list->length--;
}

void getSqlist(SqList* list,int i,ElemType *e){
    if(list->length==0){
        cout<<"表空无数据"<<endl;
        return ;
    }
    if(i<1||i>list->length){
        cout<<"位置不合法"<<endl;
        return ;
    }
    *e = list->date[i-1];
}

int main(int argc, char** argv) {
    SqList sqlist;
    ElemType gete,dele; 
    initSqList(&sqlist);
    printSqList(sqlist);
    insertSqlist(&sqlist,1,1);
    insertSqlist(&sqlist,2,2);
    insertSqlist(&sqlist,3,3);
    insertSqlist(&sqlist,4,4);
    printSqList(sqlist);
    getSqlist(&sqlist,4,&gete);
    cout<<"取出的数据为:"<<gete<<endl;
    deleteSqlist(&sqlist,4,&dele);
    cout<<"删除的数据为:"<<dele<<endl;
    printSqList(sqlist);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值