顺序表的一点小问题,编译不成功,大家来看看
就是一个顺序表实现以下操作:1. 建立线性表L={12,13,21,24,28,31,42,77};
2. 在第5个元素之前插入26;
3. 删除第5个元素28;
4. 查找28。
代码如下
#include<stdlib.h>
#include<stdio.h>
#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 20
char re_choose[]={"\n选择非法,请输入正确的编号...\n"};
struct SqList
{
int *elem;//存储空间基址
int length;//当前长度
int listsize;//当前分配的存储空间容量(以sizeof(ElemType)为单位)
};
SqList L;
void InitList_sq(SqList &L,int &LIST_INIT_SIZE )//构造一个空的线性表
{
L.listsize=LIST_INIT_SIZE;
L.elem=new int[L.listsize];
L.length=0;//空表长度为0
//初始存储容量
}//InitList_sq
void Output_Sq(SqList &L)
{//逐个输出线性表中的数据元素
for(int i=0;i<L.length;i++)
cout<<L.elem[i]<<endl;
}
int Search_Sq(SqList &L,int &x)
{//查找元素X 如果找到返回X所在位置下标,否则返回-1
for (int i=0;i<L.length;i++)
if (L.elem[i]==x)
return i;
return -1;
}
bool Insert_Sq(SqList &L,int k,int &x)
{
if (k<0 || k >L.length|| L.length==L.listsize)
return false;
for (int i=k-1;i<=L.length;i++)
L.elem[i+1]=L.elem[i];
L.elem[k-1]=x;
L.length++;
return true;
}
bool ListDelete_Sq(SqList &L,int k)
{
if (k<1 ||k>L.length) return false;
{
for (int i=k;i<L.length;i++)
L.elem[i-1]=L.elem[i];
L.length--;
return true;
}
}
void main_switch(char j)
//操作选择函数
{
switch(j)
{
case '1' ://显示链表中的数据元素
system("cls");
Output_Sq(L);
system("pause");
system("cls");
break;
case '2' ://插入数据元素
system("cls");
printf("\n\n\n\n\n\n\n\n\n");
printf("\t\t\t");
Insert_Sq(L,5,26);
Output_Sq(L);
system("pause");
system("cls");
break;
case '3'://删除数据元素
system("cls");
printf("\n\n\n\n\n\n\n\n\n");
printf("\t\t\t");
ListDelete_Sq(L,5);
Output_Sq(L);
system("pause");
system("cls");
break;
case '4'://查找数据元素
system("cls");
printf("\n\n\n\n\n\n\n\n\n");
printf("\t\t\t");
Search_Sq(L,28);
system("pause");
system("cls");
break;
case '0':
exit(0);
break;
default :
cout <<re_choose<<endl;
system("pause");
system("cls");
break;
}//end switch
}
void Menu() //菜单函数
{
// cout <<"\n\n\t\t"<<"=============线性表的顺序存储=============="<<endl;
cout <<"\n\t\t"<<"请选择以下一个功能:"<<endl;
cout <<"\n\t\t"<<"1.显示线性表中的数据元素."<<endl;
cout <<"\t\t2.在第5个元素之前插入26." << endl;
cout <<"\t\t3.删除第5个元素28." << endl;
cout <<"\t\t4.查找28."<<endl;
cout <<"\t\t0.退出.\n"<<endl;
cout <<"\t\t===============================\n"<<endl;
}
int main()
{
char j;
char a[100];
int i;
int a[100]={12,13,21,24,28,31,42,77};
for(i=0;i<7;i++)
{
L.elem[i]=a[i];
}
system("cls");
system("pause");
system("cls");
int listsize=LIST_INIT_SIZE;
InitList_sq(L,LIST_INIT_SIZE);//构造空表
while(1)
{
system("cls");
Menu();
printf("\n\t请输入功能编号:");
gets(a);
if(a[1]!='\0')
{
cout <<"\n"<<re_choose<<endl;
system("pause");
system("cls");
continue;
}
else
{
if(a[0]=='0')
break;
main_switch(a[0]);
}
}
return 0;
}
编译出现以下错误。
c:\documents and settings\administrator\桌面\线性表基本操作\顺序表\1.cpp(18) : error C2143: syntax error : missing ')' before 'constant'
c:\documents and settings\administrator\桌面\线性表基本操作\顺序表\1.cpp(18) : error C2143: syntax error : missing ';' before 'constant'
c:\documents and settings\administrator\桌面\线性表基本操作\顺序表\1.cpp(18) : fatal error C1004: unexpected end of file found