问题遇到的现象和发生背景
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 20
#include<iostream>
typedef int element; // 自定义int类型element
#define list_size 10000
using namespace std;
typedef struct
{
int key;
}Redtype;
typedef struct SqList
{
element* elem;
Redtype r[MAXSIZE + 1];
int length;
};
int creatnewlist(SqList& L, int n);// 建立顺序表
int initit(SqList& L);
int initit(SqList& L) //建表初始化
{
L.elem = (int*)malloc(sizeof(int));
if (!L.elem) return -1;
L.length = 0;
return 0;
}
int creatnewlist(SqList& L, int n) // 建立顺序表
{
int i;
L.elem = (int*)malloc(sizeof(int) * list_size);
if (!L.elem) return -1;
else
{
for (i = 0; i < n; i++)
{
scanf_s("%d", &L.elem[i]);
L.length++;
}
}
return 0;
}
int Search_Seq(SqList L, int key)
{
L.r[0].key = key;
for (int i = L.length; !(L.r[i].key = key); --i)
{
return i;
//printf("%d", i);
}
}
int Search_Bin(SqList L, int key)
{
int low = 1;
int high = L.length;
while (low <= high)
{
int mid = (low + high) / 2;
if (key = L.r[mid].key)
return mid;
else if (key < L.r[mid].key)
high = mid - 1;
else
low = mid + 1;
}
return 0;
}
//void ShellSore(SqList& L, int dlat[], int t)
//{
// for (int k = 0; k < t; k++)
// printf("%d", dlat[t]);
//}
void show(SqList &L) //输出顺序表
{
int i;
for(i = 0;i<L.length;i++)
{
if(i==L.length-1) printf("%d\n", L.elem[i]);
else printf("%d ", L.elem[i]);
}
}
int main()
{
int n;
int dlat[10];
printf("请输入数:");
//int len;
//scanf_s("%d", &len);
SqList L;
initit(L);
creatnewlist(L, 10);
Search_Bin(L, 1);
Search_Seq(L, 1);
printf("结果1");
int pos = Search_Bin(L, 1);
printf("%d\n", pos);
printf("结果2");
int sa = Search_Seq(L, 1);
printf("%d", sa);
}
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果