zoukankan      html  css  js  c++  java
  • 数据结构考研--线性表例2-2

    //天勤p28例2-2:删除顺序表L中下标为p的元素,成功返回1,否则返回0,并将被删除元素的值赋给e
    //首先要找到p,然后将p后的元素都前移一位,长度-1就可以了
    //先写查函数findElem,找到返回位置,找不到返回-1
    #include "stdio.h"
    #define MAXSIZE 100 
    typedef struct{    
        int data[MAXSIZE];
        int length;
    }List;

    void init(List &Li){
        int size = 20;
        for(int i=0;i<size;i++){
            Li.data[i]=i;
        }
        Li.length = size;
    }

    int findElem(List &Li,int n){    //查找函数。若不用修改结构体内的内容,可以直接传结构体过去(List Li)让它在函数里生成一个一样的(其实最好的做法是无论何时都传(地址)指针。因为节省空间)
        for(int i=0;i<Li.length;i++){
            if (Li.data[i] == n){
                return i;    //找到
            } 
        }
        return -1;    //找不到
    }

    int deleteElem(List &Li,int n,int &e){
        int local = findElem(Li,n);
        if(local == -1){
            e = n;    //赋给e
            return 0;    //找不到,返回0 
        } 
        for(int i=local;i<Li.length-1;i++){
            Li.data[i] = Li.data[i+1];   //元素前移
        }
        Li.length = Li.length - 1;
        return 1;   //成功,返回1
    }
    int main(){
        List L;
        int e;
        int n = 22;
        init(L);
        int d = deleteElem(L,n,e);
        // for(int i=0;i<L.length;i++){  //测试输出
        //     printf("%d ",L.data[i]);
        // }
        printf("%d ",d);
        // printf("%d",e);   //测试输出
        getchar();
        return 0;
    }

    //原序列:0~19
    //删除 n=3 后序列12456~19,返回1
    //删除 n=22 后序列不变,返回0

    //delete是保留字?换了delete就正常了
  • 相关阅读:
    数据结构、算法、及线性表总结
    第二次博客作业: 函数+进制转换器v1.0beta
    c语言文件
    Oracle中Left Outer Join和外关联(+)的区别
    Oracle中trunc函数、round 函数、ceil函数和floor 函数的使用
    Oracle 表之间的连接 JOIN
    Oracle TRUNCATE语法
    使用Content editor webpart 为NewForm增加默认值
    Metadata serviceTaxonomyHiddenList 权限
    SQL server总是不能远程连接
  • 原文地址:https://www.cnblogs.com/BreezeFeng/p/13946475.html
Copyright © 2011-2022 走看看