想在头文件中初始化顺序表,在main函数只能传参的时候传的是(sqlList L),调用LocalElem(L,X)是报错说没有给L初始化.
原因:调用初始化的函数,传过去的参数是sqlList L并不能改变实参,虽有后来改为了sqlList *L,就可以了
#pragma once#define maxSize 100typedef struct { int data[maxSize]; int length;}sqlList;//初始化一个线性表(n:数组的长度)void InitList(sqlList *L, int a[], int n) { int i; L->length = 0; for (i = 1;i <= n;i++) { L->data[i] = a[i - 1]; L->length++; }}//返回第一个比x元素大的元素的位置int LocateElem(sqlList L,int x) { int i; for (i = 1;i <= L.length;i++) { if (x<L.data[i]) { return i; } } return i;}
#include <stdio.h> #include "head.h" int main() { sqlList L; int a[10] = {1,2,3,4,5,6,7,8,9,10}; /*for (int i = 1;i <= 10;i++) { L.data[i] = a[i-1]; } L.length = 10;*/ InitList(&L,a,10); int x = LocateElem(L,5); printf("%d\t",x); }
时间: 2024-10-17 00:53:47