zoukankan      html  css  js  c++  java
  • 王道数据结构代码:顺序表的增删改查操作

    #include<bits/stdc++.h>
    using namespace std;
    #define MaxSize 10 
    typedef struct {
        int data[MaxSize];
        int lenght;
    }SqList;
    bool ListInsert(SqList &L , int index , int e){ // 插入的顺序表,位置,元素 
        if(index < 1 || index > L.lenght+1)/// id 是元素的位置,下表是从1开始的
            return false; // 插入失败
        if(L.lenght >= MaxSize)
            return false;
        for(int i = L.lenght ; i >= index ; i--){
            L.data[i] = L.data[i-1];
        } 
        L.data[index-1] = e;
        L.lenght ++;
        return true; // 插入成功 
    }
    bool ListDelete(SqList &L , int index , int &e){
        // e 为删除的变量 , 把这个变量“带回去”,所以加个& ,
        //不用int 是这里的bool型函数用来检查有没有删除成功,
        //改成int返回的话,就不用定义e了,但是不能判断删除操作是成功了 
        if(index < 1 || index > L.lenght)
            return false;
        e = L.data[index-1]; // 保存删除的元素
        for(int i = index; i < L.lenght ; i++){
            L.data[i-1] = L.data[i];
        } 
        L.lenght--;
        return true;
         
    }
    int LocateElem(SqList L, int e){// 查找顺序表中第一个等于e的位序(不是下标) 
        for(int i = 0 ; i < L.lenght ; i++){
            if(L.data[i] == e)
                return i+1 ;
        }
        return -1;
    }
    int ListFind(SqList L , int index){ // 查询第index个元素 
        return L.data[index-1] ; 
    }
    int main(){
        /// 这里一定不要搞混下标和位置 , 数组下是从0开始的,位置是从1开始的 
        SqList L;
        L.data[0] = 1 ; 
        L.data[1] = 2 ;
        L.data[2] = 4 ;
        L.data[3] = 5 ;
        L.data[4] = 6 ;    
        L.lenght = 5; // 插入数据后要改长度, 不要马大哈 
        
         // 在3的位置插入3 , 
        if(ListInsert(L,3,3)){
            printf("Insert succeed!
    ");
        } 
        else {
            printf("Insert fail!
    ");
        }
        for(int i = 0 ; i < L.lenght ; i++) printf("%d " , L.data[i]); 
        printf("
    ");
        
        // 现在我们把刚刚插入的元素在删除掉
        int e = -100000; // 用来接收返回的删除掉的元素 
        if(ListDelete(L,3,e)){
            
            printf("Delete succeed!
    ");
            printf("Delete element is %d
    " , e);
        } 
        else{
            printf("Delete fail!
    ");
        }
        for(int i = 0 ; i < L.lenght ; i++) printf("%d " , L.data[i]); 
        printf("
    ");
        printf("find opeartor : %d
    " , ListFind(L , 1));// 查询第一个位置的元素
        printf("查询第一个等于e的位序:%d
    " , LocateElem(L,4));//e 为 4 
        return 0;
    } 
  • 相关阅读:
    Linux常用命令2
    Linux常用命令1
    Nginx配置Kafka
    SpringBoot整合Druid
    spring boot jpa
    mybatis-plus_2
    copy data to map
    HashMap容量问题
    在SpringBoot主启动类中获取实例化的Bean
    Linux环境中Rsync增量备份文件
  • 原文地址:https://www.cnblogs.com/Li-ningning/p/14619773.html
Copyright © 2011-2022 走看看