#要求扩展顺序表,但是realloc后报错,怎么办?
只需要看extend那个函数即可,谢谢!
using namespace std;
#include "stdio.h"
#include <iostream>
//定义ERROR OK的返回值
#define ERROR 0
#define OK 1
//定义最大数组长度
#define INITSIZE 11
//声明int
typedef int Elemtype;
//声明一个顺序表
typedef struct {
Elemtype* elem;
int length;
int listsize;
}Seqlist;
Seqlist L;
//初始化结构体
int InitList(Seqlist&);
void TraveList(const Seqlist&);
int InsertList(Seqlist& L, int i, Elemtype e);
int FindElem(const Seqlist&, Elemtype e);
int Delete(Seqlist& L, int i);
int Clear(Seqlist& L);
void Destory(Seqlist& L);
int ListExtend(Seqlist& L);
//声明函数
int InitList(Seqlist&) {
L.elem = new Elemtype[INITSIZE];//用new开辟一个数组,并把地址给L.elem,那么就形成了L.elem的数组
L.length = 0;//表长为0
L.listsize = INITSIZE; //设置表的最大长度
return OK;
}
int InsertList(Seqlist& L,int i,Elemtype e) {
int j;//设立循环变量
if (i<1 || i>L.length+1)
return ERROR;//判断插入位置是否合法
if (L.length >= L.listsize)
return ERROR;//判断表是否已满
for (j = L.length - 1; j >= i - 1; j--)
L.elem[j + 1] = L.elem[j];//从后往前移
L.elem[i - 1] = e;//把e赋值给i的位置
L.length++;
return OK;
}
int FindElem(const Seqlist&, Elemtype e) {
int i = 0;
for (i = 0; i < L.length; i++) {
if (e==L.elem[i])
{
printf("元素%d的位置是%d", L.elem[i], i + 1);
}
}
return i + 1;
}
int Delete(Seqlist& L, int i) {
int e;
int j = 0;
if (i<1 || i>L.length)
return ERROR;
e = L.elem[i - 1];
for (j = i; j <= L.length - 1; j++)
L.elem[j - 1] = L.elem[j];
L.length--;
printf("编号第九号元素%d已删除,此时长度为%d\n",e, L.length);
return OK;
}
int Clear(Seqlist& L){
L.length = 0;
printf("顺序表已清空");
return OK;
}
void Destory(Seqlist& L) {
printf("顺序表已销毁");
free(L.elem);
}
int ListExtend(Seqlist&L) {
/L.elem = (Elemtype*)realloc(L.elem, sizeof(Elemtype) * (L.listsize + 1));
return OK;
}
void TraveList(const Seqlist&) {
printf("遍历");
for (int i = 0; i < L.length; i++) {
printf("%d ", L.elem[i]);
}printf("\n");
}
79行前面多了一个斜杠/