首页    新闻    小组    威客    人才    下载    博客    代码贴    在线编程    论坛
为什么LocateElem返回值总是1?

似水涟漪2017-07-31 10:30 发布

#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef    int    Status;
typedef    int ElemType;
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct
{
     ElemType *elem;
     int length;
     int listsize;
}SqList;
Status InitList_Sq(SqList *L)                  // 构造空的线性表
{
     L->elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
     if (! L->elem)
     {
         printf("构造失败!\n");
         exit(OVERFLOW);
     }
     L->length = 0;
     L->listsize = LIST_INIT_SIZE;
     printf("构造成功!\n");
     return OK;
}
int compare(int a,int b)
{if(a=b)
    return 1;
return 0;

}
Status LocateElem_Sq(SqList L, ElemType e, Status (* compare)(ElemType, ElemType))        // 在L中找到一个值与e满足compare()的元素的位序
{
     int i = 1;
     int *p = L.elem;
     while (i <= L.length && !(* compare)(*p ++, e))
     {
         i++;
     }
     if (i <= L.length)
     {
         return i;
     }
     else
     {
         return 0;
     }
}/*指向函数的指针*/Status main(void)
{
     SqList L;
     ElemType i, m;
    printf("初始化线性表···");
     InitList_Sq(&L);    }
     for (i = 1; i <= LISTINCREMENT; i ++)
     {
         L.elem[i - 1] = i;
         L.length ++;
     }
     printf("线性表内初始数值为:\n");
     for (i = 1; i <= LISTINCREMENT; i ++)
     {
         printf("%4d", L.elem[i - 1]);
     }
     printf("\n");
     m=LocateElem_Sq(L,3,compare);
     printf("与4相等的元素的位序%d",m);
return 0;
}
 
 
最新话题:

新人报道来了

新增论坛可用分兑换资源分功能

新人报道

下载的东西很精确

下载区无法登陆啊

关于微信

在下载区登陆不成功

明明登录了,下载总是提示需要登录