数构用c语言做,不会做怎么办

输入任一顺序表,实现顺序查找,对顺序表进行排序,并输出结果,对有序顺序表进行折半查找

哪一步有问题啊??“?

#include <stdio.h>
typedef struct _sqlist
{
    int a[1000];
    int len;
}sqlist;

void sort(sqlist *sq)
{
    for(int i=0;i<sq->len-1;i++)
    {
        for(int j=0;j<sq->len-1-i;j++)
        {
            if(sq->a[j] > sq->a[j+1])
            {
                int t = sq->a[j];
                sq->a[j] = sq->a[j+1];
                sq->a[j+1] = t;
            }
        }
    }
}

int search(sqlist *sq,int m)
{
    int begin = 0,end = sq->len - 1;
    while(begin <= end)
    {
        int mid = (begin + end)/2;
        if(sq->a[mid] == m)
            return mid;
        if(sq->a[mid] < m)
            begin = mid + 1;
        else
            end = mid - 1;
    }
    return -1;
}

int main()
{
    sqlist sq;
    int m,idx=0;
    printf("输入顺序表长度:");
    scanf("%d",&sq.len);
    printf("输入%d个整数:",sq.len);
    for(int i=0;i<sq.len;i++)
        scanf("%d",&sq.a[i]);
    sort(&sq);
    printf("排序后为:");
    for(int i=0;i<sq.len;i++)
        printf("%d ",sq.a[i]);
    printf("\n");
    printf("输入要查找的整数:");
    scanf("%d",&m);
    idx = search(&sq,m);
    if(idx < 0)
        printf("没有这个整数");
    else
        printf("%d是第%d个整数",m,idx+1);
    return 0;
}

顺序表本质就是数组,运行结果:

img

代码:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#define MAXNUM 100
typedef struct _list
{
    int data[MAXNUM];
    int size;
}List;

//排序
void bubbleSort(List* ls)
{
    int i, j, t;
    for (i = 0; i < ls->size - 1; i++)
    {
        for (j = 0; j < ls->size - 1 - i; j++)
        {
            if (ls->data[j] > ls->data[j + 1]) //升序排序
            {
                t = ls->data[j];
                ls->data[j] = ls->data[j+1];
                ls->data[j+1] = t;
            }
        }
    }
}

//顺序表以升序排列时,折半查找x
int binSearch(List ls,int x)
{
    int low, high, mid;
    low = 0;
    high = ls.size - 1;
    while (low <= high)
    {
        mid = (low + high) / 2;
        if (x < ls.data[mid])
            high = mid - 1;
        else if (x > ls.data[mid])
            low = mid + 1;
        else
            return mid;
    }
    return -1;
}

int main()
{
    List ls;
    ls.size = 0;
    int n, i;
    int index = 0;
    printf("请输入顺序表中数字的个数:");
    scanf("%d", &ls.size);
    printf("请输入%d个整数:\n",ls.size);
    for (i = 0; i < ls.size; i++)
    {
        scanf("%d", &ls.data[i]);
    }
    printf("请输入要查找的数:");
    scanf("%d", &n);
    bubbleSort(&ls); //排序
    index = binSearch(ls, n); //查找

    printf("排序后的顺序表:\n");
    for (i = 0; i < ls.size; i++)
        printf("%d ", ls.data[i]);
    printf("\n");


    if (index < 0)
        printf("未找到\n");
    else
        printf("找到,%d在排序后的顺序表的下标为 %d", n,index);
    return 0;
}