关于删除顺序表中最小的值

来源:互联网 发布:html网页引用js文件 编辑:程序博客网 时间:2024/06/03 13:16

删序顺序表中最小的值 ,先用c语言的,写的过程中发现c语言不支持布尔型 compile有错误,所以直接改了源文件的后缀,变成cpp了,所有源程序看起来很怪(c++源文件中的纯c代码)


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

#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct sqlist{

    int *elem;
    int length;

    int listsize;

}sqlist;

bool deleteSeqlist(sqlist *L,int *minValue){//纯c中的地址传值是用*的,在c++中可以用&
    int min ;      //过程就是先假定顺序表的第一个值为最小,然后再依次比较,找到最小的一个值 ,用minValue记录下来,返回
    int i;
    int pos;
    int length;
    pos=0;
    if((*L).length==0){
        printf("the length is 0 ,return ");
    return false;}
    min = (*L).elem[0];

     length = (*L).length;
    for(int i=1;i<length;i++){

        if((*L).elem[i]<min){

            min = (*L).elem[i];
            pos = i;
        }
    }
    for(i=pos;i<length;i++){
        (*L).elem[i] = (*L).elem[i+1];

    }
    (*L).length--;
    *minValue = min;
    return true;

}
void main(){
    bool boolean;
    sqlist L;
    int i;
    int minValue;
    i = 0;
    L.elem = (int * )malloc(LIST_INIT_SIZE*sizeof(int));
    L.listsize = LIST_INIT_SIZE;

    for(i=0;i<10;i++){
        L.elem[i]=10+i;
    }
    L.elem[5]=5;
    L.length = 10;
    printf("this is  %d %d ",L.length,L.listsize);

    boolean =  deleteSeqlist(&L,&minValue);
    printf("the values is %d %d",minValue);
}

原创粉丝点击