呵呵,菜鸟能写出这么长的代码,不错,帮你看看
#include
//这个函数声明与定义不相符,注意变量顺序int ListInsert(sequenlist *L, datatype e, int i);//在线性表L中第i个位置上插入元素e。
int ListInsert(sequenlist *L, int i, datatype e) ;
int ListDelete(sequenlist *L, int i) //在线性表L中删除第i个元素。
{
int j;
if ( i<1 || i> L->last+1)
{
printf ("error");
//return NULL; NULL是一个指针类型的0,不能这样写,因为你定义的函数返回值类型是int
return 0;
}
else
{
for ( j = i; j <= (*L).last; j++ )
L->data[j-1] = L->data[j];
L->last --;
}
return 1;
}
int main()
{
sequenlist *L=NULL; //这里声明了一个指针,最好赋上初值NULL
char ch = 'a';
int k ;
//L指针在没有指定有效地址空间时,是不能直接使用的!不然它指向的是NULL不能操作
L=(sequenlist *)malloc( sizeof(sequenlist) ); //为指针分配一个有效的空间才可以用哦
....
printf("插入A B C D E\n");
ch = 'A';
for( k = 10; k <= 15 ; k ++)
{
L ->data[k] = ch;
ch ++;
}
L->last=k; //要加一句,不然无法根据last来输出数据
。。。。。
free(L); //释放指针
return 0; //既然函数定义返回值类型为int,这里应该加一个return 0才符合函数定义!
}
void DispList(sequenlist *L) //输出线性表L。要返回值有什么用哦?
{
int j;
for(j=0; j
{
printf("%c",L->data[j]);
}
printf("\n"); //最后加个换行
}
逻辑问题请LZ再仔细研究一下,有问题再问