C语言写顺序表操作时遇到的一些警告 这些警告是如何产生的 怎样消除这些警告
这是源文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "SqList.h"
int main() {
SqList A, B, C;
InitSqList(&A, 5);
InitSqList(&B, 5);
InitSqList(&C, 3);
int i;
for (i = 0; i < 5; i++) {
A.elem[i] = i;
B.elem[i] = i + 1;
A.length++;
B.length++;
}
Traverlist(&A);
Traverlist(&B);
SetDifferenceList(&A,& B,& C);
//UnionSqList(&B, &A, &C);
//InterSectionList(&A, &B, &C);
Traverlist(&C);
}
下面是头文件SqList
```c
#ifndef _SQLIST_H_ //如果没有引入头文件SqList.h
#define _SQLIST_H_
#define ListSpaceIncr 10
#define OVERFLOW 0
#define ERROR 0
#define OK 1
#define FALSE 0
#define TURE 1
typedef int LElemType;
typedef int Status;
Status InitSqList(); //初始化
Status listIsEmpty(); //判空
Status listLength(); //求表长
Status locateElem(); //查找
Status listInsert(); //插入
Status listDelete(); //删除
Status listExchange(); //修改
void UnionSqList(); //并集
void InterSectionList(); //交集
void SetDifferenceList(); //差集
void Traverlist(); //遍历
typedef struct {
LElemType* elem;
int length;
int listSize;
}SqList;
Status InitSqList(SqList* L, int InitSize) { //初始化
L->elem = (LElemType*)malloc(InitSize * sizeof(LElemType));
L->length = 0;
L->listSize = InitSize;
return OK;
}
Status listIsEmpty(SqList* L) { //判空
if (L->length) {
return FALSE;
}
else return TURE;
}
Status listLength(SqList* L) { //求表长
return L->length;
}
Status locateElem(SqList* L, LElemType e) { //查找位置
int i;
for (i = 0; i < L->length && L->elem[i] == e; i++);
if (i < L->length)
return i + 1;
else
return 0;
}
Status listInsert(SqList* L, int i, LElemType e) { //插入
LElemType* base, j;
if (i < 1 || i>L->length || L == NULL) {
printf("插入位置错误\n");
return FALSE;
}
if (L->length > L->listSize) {
base = (LElemType*)realloc(L->elem, (L->listSize + ListSpaceIncr) * sizeof(LElemType));
L->elem = base;
L->listSize += ListSpaceIncr;
}
for (j = L->length - 1; j > i - 1; j--) {
L->elem[j] = L->elem[j - 1];
}
L->elem[i - 1] = e;
L->length++;
return OK;
}
Status listDelete(SqList* L, int i, LElemType* e) { //删除元素
int j;
if (i < 1 || i > L->length) {
return 0;
}
*e = L->elem[i - 1];
for (j = i - 1; j < L->length; j++) {
L->elem[j] = L->elem[j + 1];
}
L->length--;
return OK;
}
Status listExchange(SqList* L, int i, LElemType e) { //修改元素
if (i < 1 || i > L->length)
return 0;
L->elem[i - 1] = e;
return OK;
}
void UnionSqList(SqList* L1, SqList* L2, SqList* L3) { //并集
int l, i, j;
LElemType* base;
for (i = 0; i < L1->length; i++) {
L3->elem[i] = L1->elem[i];
}
l = L1->length;
for (i = 0; i < L2->length; i++) {
if (L3->length == l) {
base = (LElemType*)realloc(L3->elem, (L3->listSize + ListSpaceIncr) * sizeof(LElemType));
L3->elem = base;
L3->listSize += ListSpaceIncr;
}
for (j = 0; j < L1->length && L2->elem[i] != L1->elem[j]; j++)
if (j == L1->length - 1) {
L3->elem[l] = L2->elem[i];
l++;
}
}
L3->length = l;
}
void InterSectionList(SqList* L1, SqList* L2, SqList* L3) { //交集
int i, j, k;
k = 0;
for (i = 0; i < L2->length; i++) {
for (j = 0; j < L1->length; j++) {
if (L2->elem[i] == L1->elem[j]) {
L3->elem[k] = L1->elem[j];
k++;
break;
}
}
}
L3->length = k;
}
void SetDifferenceList(SqList* L1, SqList* L2, SqList* L3) { //差集
int i, j, k;
for (i = 0; i < L1->length; i++) {
k = 0;
for (j = 0; j < L2->length; j++) {
if (L1->elem[i] == L2->elem[j]) {
k++;
break;
}
}
if (k == 0)
{
L3->elem[L3->length++] = L1->elem[i];
}
}
}
void Traverlist(SqList* L) { //遍历
int i;
printf("\n==============================================\n");
for (i = 0; i < L->length; i++)
printf("第%d个数字是%d\n", i + 1, L->elem[i]);
printf("==============================================\n");
}
#endif
报错信息

