顺序表查找

#include <iostream>


#include <stdio.h>
#include <stdlib.h>

using namespace std;

#define MaxSize 10
typedef struct {
    int data[MaxSize];
    int length;
}SeqList;

void InitList(SeqList &L ){
    for(int i = 0 ; i < L.length ; i++){
        L.data[i] = 0;
    }
}
int InserList(SeqList &L , int i, int e){
    if(i > MaxSize || i<1){
        return -1;
    }
    if(MaxSize==L.length){
        return -2;
    }

    for(int j = L.length ; j>=i ;j--){
        L.data[j] = L.data[j-1];
    }
    L.data[i-1] = e;
    L.length++;
}

bool  deleteList_e(SeqList &L , int i, int &e){
    if(L.length ==0){
        return false;
    }

    if(i<1 || i >L.length +1){
        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;


}

void  show(SeqList L){
    for(int i = 0 ; i< L.length ; i++){
        printf("List 【%d】:%d \n",i,L.data[i]);
    }

}


bool findByIndex(SeqList L,int i,int &e){
    if(L.length ==0){
        return false;
    }

    if(i<1 || i >L.length +1){
        return false;
    }
    e = L.data[i-1];
    return true;

}

bool  findByValue(SeqList L,int &index,int e){
    if(L.length ==0){
        return false;
    }
 

    for(int i = 0 ; i < L.length ; i++){
        if(L.data[i] == e){
            index = i+1;
            break;
        }
    }


}

int main(){
    SeqList L;
    InitList(L);
    InserList(L,1,1);
    InserList(L,2,2);
    InserList(L,3,3);
    InserList(L,4,4);
    int index = -1;
    int val = -3;
    int i = 2;
   if( findByIndex(L,i,val)){
       printf("第 %d 个 元素 为 %d\n",i,val);
   }else{
       printf("error");
   }

    if( findByValue(L,index,4)){
        printf("值为4的元素是第 %d 个\n",index);
    }else{
        printf("error\n");
    }




  // // printf("%d \n",InserList(L,0,888));
 //  int e=-1;
//   // deleteList_e(L,2,e);

 //   if( deleteList_e(L,2,e)){
  //      printf("第 %d 个元素已经删除,值为:%d \n",2,e);
 //   }

    //printf("length: %d \n",L.length);
    show(L);




    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值