我想问一下该怎么改才能编译通过?

写出顺序表 sqlist 的 nextElem 操作实现算法,并分析算法时间复杂度。操作定义: nextElem ( L , curelem ,& next elem )初始条件:线性表 L 已经存在。操作结果:若 curelem 是工的数据元素,且不是最后一个,则用 next elem 返回它的后续,否则操作失败, next elem 无意义。

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
#define error 0
#define ok 1
typedef int status;

#define listinitsize 100
#define listincrement 10
typedef char elemtype;
typedef struct{
    elemtype *elem;
    int length;
    int listsize;
}sqlist ;

status initlist(sqlist &l)//构造一个空的线性表L 
{
    l.elem=(elemtype *)malloc(listinitsize*sizeof(elemtype));
if(!l.elem) exit(error);//存储分配失败
l.length=0;
l.listsize=listinitsize;//初始存储容量 
return ok;
}

//顺序表实验4个辅助函数:
status inputlist(sqlist &l)//顺序表输入
{ int i,n;
  //printf("please input the length of the sqlist:");
  scanf("%d",&n);//n个元素 
  l.length=n;
  //printf("please input the data of the sqlist:");
  for (i=0;i<=l.length-1;i++) scanf("%d",&l.elem[i]);//输入n个元素 
  return ok;
}

status  listtraverse(sqlist l)//顺序表输出
{ int i;
  //printf("the length of the sqlist:");
  printf("%d\n",l.length);
 // printf("the data of the sqlist:");
  for (i=0;i<=l.length-1;i++) printf("%d ",l.elem[i]);
  printf("\n");
  return ok;
}

status destroylist(sqlist &l)//顺序表撤销
 { free(l.elem);
   l.length=0;
   l.listsize=0;
   return ok;
 }

status clearlist(sqlist &l)//顺序表重置
 { 
   l.length=0;
   return ok;
 }
 
 status listdelete(sqlist &l,int i,elemtype &e)
 {
     if(i<1 || i>l.length) return error;
     e = l.elem[i-1]; 
     for( ;i<l.length;i++) l.elem[i-1]=l.elem[i];
     l.length--;
     return ok;

 }
 status nextelem(sqlist &l,int curelem,elemtype &next_elem)//curelem是l的元素且不是最后一个,nextelem返回后续 
 {
     int i,j,k=0;
     j=i;
     for(i=0;i<l.length-1;i++)
     {
         if(l.elem[i]==curelem)
         {
         k=k+1;
         break;    
         }
    } 
    if(k>0) 
    {
        for(;i<l.length;i++)
        {
            next_elem[i-j]==l.elem[i];//赋值后继的数组给next_elem 
        cout<<next_elem[i]<<" ";
        return next_elem;
        }
        
    }
    //return error;
    else return error;
 }
 int main()
{ 
  sqlist l;int next_elem;int *nextelem;
  initlist(l);
  inputlist(l);
  int curelem; 
 scanf("%d",&curelem);

  if( nextelem(l,curelem,&next_elem)) cout<<nextelem(l,curelem,&next_elem);
  else cout<<"error"<<endl;
  destroylist(l);
  return 0;

}

img