head.h中代码如下
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 20
typedef struct {
int elem[MaxSize];
int length;
} SqList;
void InitList(SqList*& L);
void InsertList(SqList*& L, int* a, int n);
void DestroyList(SqList*& L);
void DispList(SqList* L);
int main()
{
SqList* S1;
InitList(S1);
int a[5] = { 1,2,3,4,5 };
InsertList(S1, a, 5);
DispList(S1);
}
w.cpp中代码如下:
#include<stdio.h>
#include"head.h"
void InitList(SqList*& L) {//初始化SqList
L = (SqList*)malloc(sizeof(SqList));
L->length = 0;
}
void InsertList(SqList*& L, int* a, int n) //插入n个元素
{
for (int i = 0; i < n; i++)
{
L->elem[i] = a[i];
L->length++;
}
}
void DestroyList(SqList*& L) //销毁SqList
{
free(L);
}
void DispList(SqList* L) {//显示
for (int i = 0; i < L->length; i++)
printf("%d", L->elem[i]);
}
报错如下:
修改如下:
head.h中代码:
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 20
typedef struct {
int elem[MaxSize];
int length;
} SqList;
void InitList(SqList*& L);
void InsertList(SqList*& L, int* a, int n);
void DestroyList(SqList*& L);
void DispList(SqList* L);
w.cpp中代码:
#include<stdio.h>
#include"head.h"
void InitList(SqList*& L) {//初始化SqList
L = (SqList*)malloc(sizeof(SqList));
if (L != NULL) {
L->length = 0;
}
}
void InsertList(SqList*& L, int* a, int n) //插入n个元素
{
for (int i = 0; i < n; i++)
{
L->elem[i] = a[i];
L->length++;
}
}
void DestroyList(SqList*& L) //销毁SqList
{
free(L);
}
void DispList(SqList* L) {//显示
for (int i = 0; i < L->length; i++)
printf("%d", L->elem[i]);
}
int main()
{
SqList* S1;
InitList(S1);
int a[5] = { 1,2,3,4,5 };
InsertList(S1, a, 5);
DispList(S1);
}
为什么把main写在 head.h 里面
.h 文件 和 .cpp 文件没配置好,main() 函数怎好放在 .h 文件里。
这么改,供参考:
//sqlist.h
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 20
typedef struct {
int elem[MaxSize];
int length;
} SqList;
void InitList(SqList*& L);
void InsertList(SqList*& L, int* a, int n);
void DestroyList(SqList*& L);
void DispList(SqList* L);
//sqlist_fun.cpp
#include"sqlist.h"
void InitList(SqList*& L) {//初始化SqList
L = (SqList*)malloc(sizeof(SqList));
L->length = 0;
}
void InsertList(SqList*& L, int* a, int n) //插入n个元素
{
for (int i = 0; i < n; i++)
{
L->elem[i] = a[i];
L->length++;
}
}
void DestroyList(SqList*& L) //销毁SqList
{
free(L);
}
void DispList(SqList* L) {//显示
for (int i = 0; i < L->length; i++)
printf("%d", L->elem[i]);
}
// mainf.cpp
#include"sqlist.h"
int main()
{
SqList* S1;
InitList(S1);
int a[5] = { 1,2,3,4,5 };
InsertList(S1, a, 5);
DispList(S1);
}