#include<stdio.h>
#include<stdlib.h>
#define maxsize 50
#define true 0
#define false 1
typedef struct{
int *data;
int length;
}sqlist;
bool init_list(sqlist &l){
//l.data-new int[maxsize];
l.data=(int*)malloc(maxsize*sizeof(int));
if(!l.data){
printf("系统分配空间失败!\n");
return false;
}
for(int i=0;i<=maxsize;i++)
l.data[i]=0;
l.length=0;
printf("初始化成功!\n");
return true;
}
bool creat_list(sqlist &l){
printf("请输入顺序表长度:\n");
scanf("%d",&l.length);
if(l.length>maxsize)
printf("数据长度超过存储长度!创建失败!\n");
return false;
printf("请输入数据表元素:\n");
for(int i=0;i<l.length;i++)
scanf("%d",&l.data[i]);
printf("顺序表创建成功!\n");
return true;
}
bool list_insert(sqlist &l,int i,int e){ //在顺序表的第i个位置插入值为e的数
if(i<1||i>l.length+1)
printf("插入位置违法!\n");
return false;
if(l.length>=maxsize)
printf("静态顺序表已满!无法插入!\n");
return false;
for(int j=l.length-1;j>=i-1;j--)
l.data[j+1]=l.data[j];
l.data[i-1]=e;
l.length++;
printf("数据插入成功!\n");
return true;
}
bool list_delete(sqlist &l,int i,int e){ //删除顺序表的第i个位置的值,并将删除值以e返回
if(i<1||i>l.length)
printf("删除位置不存在!\n");
return false;
e=l.data[i-1];
for(int j=i-1;j<l.length;j--)
l.data[j]=l.data[j+1];
l.length--;
printf("删除数据值:%d 成功!\n",e);
return true;
}
int Get_elem(sqlist l,int i){ //按位查找,返回第i个位置的值
if(i<1||i>l.length){
printf("该位置不存在!");
return 1;
}
return l.data[i-1];
}
int locate_elem(sqlist l, int e){ //按值查找,返回值为e的位置
for(int i=0;i<l.length;i++){
if(l.data[i]==e)
return i+1;
}
return 0;
}
void menu_list(){
printf("\t\t********************顺序表的创建********************\n");
printf("\t\t|| a.顺序表的初始化 ||\n");
printf("\t\t|| b.顺序表的数据化 ||\n");
printf("\t\t|| c.顺序表的插入 ||\n");
printf("\t\t|| d.顺序表的删除 ||\n");
printf("\t\t|| e.顺序表的按位查找 ||\n");
printf("\t\t|| f.顺序表的按值查找 ||\n");
printf("\t\t|| g.退出程序 ||\n");
}
char menuselect_list(){
char cmd;
printf("请输入你选择功能序号(a~g):\n");
cmd=getchar();
while(cmd>='a'&&cmd<='g');
return cmd;
}
int main(){
sqlist l;
int i,local,data;
char cmd=0;
menu_list();
do{
switch(menuselect_list()){
case'a':printf("****************顺序表的初始化*****************\n");init_list(l);getchar();break;
case'b':printf("****************数据表的数据化*****************\n");creat_list(l);getchar();break;
case'c':printf("****************数据表的插入*****************\n");
printf("请输入想要插入的位置:%d",i);
scanf("%d\n",&i);
printf("请输入想要插入的值:%d",data);
list_insert(l,i,data);break;
case'd':printf("****************数据的删除*******************\n");
printf("请输入想要删除的位置:%d",i);
scanf("%d\n",&i);
list_delete(l,i,data);break;
case'e':printf("*****************数据的按位查找***************\n");
printf("请输入你想查找的位置:%d",i);
scanf("%d\n",&i);
Get_elem(l,i);break;
case'f':printf("*****************数据的按值查找***************\n");
printf("请输入你想查找的值:%d",data);
scanf("%d\n",&data);
locate_elem(l,data);break;
case'g':printf("********************谢谢使用******************\n");
cmd='g';break;
}
}while(cmd!='g');
}
你是c语言还是 c++,这段代码用了c++的语法,用c无法编译,用c++可以编译。