数据结构 线性表 问题

插入操作的实现,求解哪里错了
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int data[50];
int length;
}SqList;
void CreateList(SqList *&L,int b[],int n)/*建立线性表*/
{
int i;
L=(SqList *)malloc(sizeof(SqList));
for(i=0;i<n;i++)
L->data[i]=b[i];
L->length=n;
}
void DispList(SqList *L) /*输出线性表*/
{
int i;
for(i=0;i<L->length;i++)
{
printf("%d ",L->data[i]);
}
printf("\n");
}
void ListInsert(SqList *&L,int i,int c)/*插入数据元素*/
{
int j;
for (j=L->length;j>i;j--)
L->data[j]=L->data[j-1];
L->data[i]=c;
L->length++;
}
int LocateElem(SqList *L,int e)/*按元素值查找*/
{
int i=0;
while(i<L->length&&L->data[i]!=e)
{
i++;
}

if(i=L->length)
return L->length;
else
return i;
}
void main()
{
SqList *L;
int n,i,item,data,x;
int a[50];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",a[i]);
}
scanf("%d",&item);
scanf("%d",&data);
CreateList(L,a,n);
x= LocateElem(L,item);
ListInsert(L,x,data);
DispList(L);
}

#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int data[50];
int length;
}SqList;
void CreateList(SqList *&L,int b[],int n)/*建立线性表*/
{
int i;
L=(SqList *)malloc(sizeof(SqList));
for(i=0;i<n;i++)
L->data[i]=b[i];
L->length=n;
}
void DispList(SqList *L) /*输出线性表*/
{
int i;
for(i=0;i<L->length;i++)
{
printf("%d ",L->data[i]);
}
printf("\n");
}
void ListInsert(SqList *&L,int i,int c)/*插入数据元素*/
{
int j;
for (j=L->length;j>i;j--)
L->data[j]=L->data[j-1];
L->data[i]=c;
L->length++;
}
int LocateElem(SqList *L,int e)/*按元素值查找*/
{
int i=0;
while(i<L->length&&L->data[i]!=e)
{
i++;
}

if(i=L->length)
return L->length;
else
return i;
}
void main()
{
SqList *L;
int n,i,item,data,x;
int a[50];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);//加个取地址符号
}
scanf("%d",&item);
scanf("%d",&data);
CreateList(L,a,n);
x= LocateElem(L,item);
 ListInsert(L,x,data);
 DispList(L);
}//唯一的问题就是输入数据时不小心丢了取地址符号!这样的问题可以把分类设置为c/c++这样才更多的人帮你回答!

 你这样写的程序逻辑上是没问题但不是完美的,可以不用数组直接用指针更好。附件里面有个我写的,有兴趣的话就看看!有疑问的话就可以一起探讨!

追问

还是不行啊 你运行下就知道了

追答

可能是你自己的编译器的问题吧?

下面的是运行结果,程序没有语法错误了,但有逻辑错误不能实现你想要的功能!这里只能是你自己参考别人的代码来修改吧!这样才能真正学会!

温馨提示:答案为网友推荐,仅供参考
相似回答