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

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

#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;
}
 
 
最新话题:

C语言兼职

W3wp进程劫持,已经加载了Dll ,但...

学习好的,需要兼职的,看过来

求助!

C语言程序设计现代方法第二版P152第...

请教C语言三个数中最大数问题

大家好!

求助大佬,请问哪里出错了,运行后...