数据结构 程序显示出错 怎么改呢??

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

#define Status int
#define ElemType int

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define LIST_INIT_SIZE 100        //线性表存储空间的初始分配量
#define LISTINCREMENT 10 //线性表存储空间的分配增量
#define MAXSIZE 100

typedef struct{
	int *elem; 
	ElemType *p; 
	int size;
	int length;
	int data;
}SqList;

//创建顺序表

int CreateList(SqList *L,int size){
	printf("请输入数据元素:"); 
    L->length=size;
	L->p=(int *)malloc(sizeof(int)* size);
	int *b=L->p;
	for(int i=0;i<size;i++){
		scanf("%d",b);
		b++;
	}
	printf("\n");
}
//输出有序表L2 
void show(SqList L){
	for(int i=0;i<L.size;i++)
	printf("%d",*(L.p++));
	printf("\n");
}
//数据元素的插入
Status ListInsert_sq(SqList *p,int e,ElemType i)
{
    if(i<1 || i>p->size+1)
    {
        printf("插入的位置不合法!\n");
        return ERROR; //i的值不合法
    }
    int *q=&(p->elem[i-1]);
    for(int *h=&(p->elem[p->length-1]);h>=q;--h) //h指向最后一个元素的指针 
       *(h+1)=*h;     //插入位置及之后的元素右移
  *q=e;               //插入e
    ++p->size;
    printf("插入成功!\n");
   return OK;
}
//数据元素的删除
int Delete(SqList *L,int i){
	int *q,*p;

    if ((i<1) || (i>L->size))
    {
        printf("输入不合法!");
        return ERROR;
    p=&(L->elem[i-1]);
    q=L->elem+L->size-1;
    for(++q;p<=q;++p)  //被删除元素之后的元素前移
    *(p-1)=*p;
    L->size--;  //表长减1
    printf("删除成功!"); 
    return OK;
}
//数据元素的定位算法
void LocateElem_Sq(SqList L, ElemType e)
 {
 	for(int i=0;i<=L.size-1;i++) {
 		if(L.data[i]==e)
 		printf("元素%d的位置序号是%d\n",e,i+1);
return 0;
}
	 if(L.data[i]>=L.length){
      printf("元素%d不存在\n",e);
  return 0;
}
}
//两个有序表的归并
SqList MergeList(SqList L,SqList L1) {
	SqList L2;
	L2.size=L.size+L1.size;
	L2.p=(int *)malloc(sizeof(int) * L2.size);
	int *d=L2.p;
	int size_L=0;
	int size_L1=0;
	while(size_L<L.size&&size_L1<L1.size){
		if(*L.p<*L1.p){
		*d=*L.p;
		L.p++;
		size_a++;	
		}
		else{
			*d=*L1.p;
			L1.p++;
			size_L1++;
		}
	d++;
}
while(size_L<L.size){
	*(d++)=*(L.p)++;
	size_L++;
}
while(size_L1<L1.size ){
	*(d++)=*(L1.p)++;
	size_L1++;
}
return L2;
}
//主函数 
int main()
{
	int n,i,e;
	int a,b;
    SqList L,L1;
    int A,B;
	//顺序表的创建
	printf("创建顺序表L\n");
	printf("请输入有序表L的长度:");
	scanf("%d",&A);
	CreateList(&L,A);
	printf("创建顺序表L1\n");
	printf("请输入有序表L2的长度:");
	scanf("%d",&B) ;
	CreateList(&L1,B);
	printf("\n顺序表L与顺序表L1合并得L2为:\n");
    L2=Merge(L,L1);
    show(L2);
	printf("数据元素的插入");
	printf("\n请输入需要插入顺序表L2的元素:") ;
	scanf("%d",&e) ;
	printf("请输入需要插入顺序表L2的位置:"); 
	scanf("%d",&i);
	ListInsert_sq(&L2,e,i);
	printf("数据元素的删除");
	printf("\n请输入需要删除顺序表L2中元素的位置:");
	scanf("%d",&a) ;
	Delete(&L2,a);
	printf("数据元素的定位\n");
	printf("请输入需要查找的元素:");
	scanf("%d",&b);
	LocateElem_Sq(L2,b);
    return 0;
}

显示的是符号的错误,就很迷茫???

你的68行少了一个},你只有if的{,没有}。

你的LocateElem_Sq函数也有问题,最后比较应该是i和L.length比较。

代码应该如下:

void LocateElem_Sq(SqList L, ElemType e)
{
    int i;
    for(i=0;i<=L.size-1;i++) {
         if(L.data[i]==e){
             printf("元素%d的位置序号是%d\n",e,i+1);
             break;
         }    
    }
    if(i >=L.length){
          printf("元素%d不存在\n",e);
    }
}