#include
#include "stdlib.h"
#define maxlen 50
typedef struct {
int data[maxlen];
int last;
}Sequenlist;
Sequenlist *SqLset(){ //建立表
Sequenlist *L;
int i;
L=(Sequenlist *)malloc(sizeof(Sequenlist));
L->last=-1;
printf("请输入长度");
scanf("%d",&i); //输入表长
if(i>0){
for(L->last=0;L->lastlast++)
scanf("%d",&L->data[L->last]);
L->last--;
}
return (L);
}
int SqLlength(Sequenlist*L) // 求表长
{
return ( L->last+1);
}
void SqLlocate(Sequenlist*L,int x){ //查找
int i,z=0;
for(i=0;i
printf("%d",i+1);
z=1;
}if(z==0)
printf("%d",-1);
}
int SqLempty(Sequenlist*L) //判断表满
{
if( L->last+1>=maxlen)
return (1);
else return(0);
}
int SqLinsert(Sequenlist*L,int i,int x){ //插入数据
int j;
if(SqLempty(L)==1){
printf("overflow");
return(0);
}
else if ((i<1)||(i> L->last+2)){
printf("error");
return(0);
}
else{
for(j=L->last;j>=i-1;j--)
L->data[j+1]= L->data[j];
L->data[i-1]=x;
L->last= L->last+1;
return(1);
}
}
int SqLcr(Sequenlist*L,int x)
{ int i,j;
for(i=0;i
{
if(x<=L->data[i])
{
i++;
break;
}
}
j=SqLinsert(L,i,x);
return(1);
}
int SqLdelete(Sequenlist *L,int i){ //删除
int j;
if( L->last<0){ //表空
printf("顺序表空!");return (0);
}else if ((i<1)||(i> L->last+1)){
printf("i参数出错!");
return(0);}
else{
for(j=i;j<=L->last+1;j++)
L->data[j-1]=L->data[j];
L->last--;
return(1);
}
}
int SqL123(Sequenlist *M)
{
int i,j,z;
for(i=0;i
for(j=i+1;j
if(M->data[i]==M->data[j])
z=SqLdelete(M,j+1);
return(1);
}
main(){
int n; int x,i,j,k;
Sequenlist *M;
M=SqLset();
printf(" 表格管理\n");
printf("-------------------\n");
printf(" 1.查找\n");
printf(" 2.插入\n");
printf(" 3.删除\n");
printf(" 4.排序\n");
printf(" 5.删除相同的元素\n");
printf(" 0.退出\n");
printf("请选择0-5\n");
scanf("%d",&n);
switch(n){
case 1:printf("查找\n");
printf("请输入要查找的数");
scanf("%d",&x);
SqLlocate(M,x);
printf("\n");
break;
case 2:printf("插入\n");
printf("请输入要插入的数");
scanf("%d",&i);
printf("请输入要插入的位置");
scanf("%d",&x);
j=SqLinsert(M,x,i);
break;
case 3:printf("删除\n");
printf("请输入要删除 的位置");
scanf("%d",&i);
j=SqLdelete(M,i);
break;
case 0:printf("再见\n");
exit(0);
case 4: printf("请输入要插入的数:");
scanf("%d",&i);
j=SqLcr(M,i);
break;
case 5:
j=SqL123(M);
break;
}
for(k=0;k<=M->last; k++)
{printf("%4d",M->data[k]);}
printf("\n");
}