线性表-c语言实现(2)

有些方法在上篇 ,这里只对 Compare()LocateElem() mergeList()insrandLinst()和更新的main()作说明。

 

======================================

1比较两个元素是否相等

int Compare(int *e1, int *e2) {
    if (*e1 == *e2) {
        return 1;
    } else
        return 0;
}

2 元素e在线性表中的下标

int LocateElem(SqList *L, int *e) { //返回某个元素的下标
    int i = 0;
    for (i = 0; i < L->length; i++) { //遍历元素
        if (Compare(&(L->elem[i]), e)) {//比较是否相等
            return i;//相等返回
        }
    }
    return -1;//e不在L中
}

3 有线性表L1,L2,如果 存在元素e 属于L2 不属于L1,则插入L1中

int mergeList(SqList *L1, SqList *L2) { //存在e属于L2但不属于L1,则放入L1中
    int i = 0;
    if (L1 == 0 || L2 == 0) {    //先判断他们非空
        exit(error);
    }
    for (i = 0; i < L2->length; i++) {    //遍历 L2 中的每一个元素
        //在每一个for中  做的仅仅是 拿到当前的 一个元素  和 L1 中所有元素进行比较,并且符合条件的插入
        int *e = &(L2->elem[i]);    //当前元素放入e  便于理解
        if (LocateElem(L1, e) == -1) {    //当前元素e 如果不在L1中
            ListInsert(L1, L1->length, *e);    //插入
        }
    }
    return ok;
}

4 随机数生成,为了生成L2 表

void insrandLinst(SqList *L, int len) {
    int i = 0;
    srand((int) time(0));
    if(L==NULL)exit(error);//判断线性表是否为空
    while (i < len) {
        L->elem[i] = rand() % 20 + 1;//申城随机数并赋值
        L->length += 1;
        i++;
    }
}

5测试数据 ,包含 线性表 c语言实现(上)的main 函数 ;

int main(void) {
    SqList *list = malloc(sizeof(int));    //看着初始化总是黄色警告心烦
    SqList *list2 = malloc(sizeof(int));    //看着初始化总是黄色警告心烦
    InitList(list);   //这里面不能将一个指针 指定为空
    InitList(list2);
    inlist(list, 10);
    insrandLinst(list2, 10);
    outlist(list);
    printf("1 listsize:%d   2 length :%d  \n", list->listsize, list->length);
    int p = 99;
    ListInsert(list, 10, p);
    printf("1 listsize:%d   2 length :%d  \n", list->listsize, list->length);
    outlist(list);
    printf("this  listdel %d\n", ListDel(list, 5));
    printf("1 listsize:%d   2 length :%d  \n", list->listsize, list->length);
    printf(" 十月十一日\n");
    int a = 9;
    printf("%d", LocateElem(list, &a));
    printf("=====================\n");
    outlist(list2);
    printf("===================\n");
    mergeList(list,list2);
    outlist(list);
    printf("ok");
    return EXIT_SUCCESS;
}

 

posted @ 2016-10-11 12:09  toono  阅读(233)  评论(0编辑  收藏  举报