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

#define MAXSIZE 1000

typedef int DataType; 

/*结构体定义部分*/ 
typedef struct
{
    DataType data[MAXSIZE];
    int last; 
}Seqlist;

/*****************************************
函数名称:Create 
函数参数:SeqList *L 指针类型参数(引用类型)
函数功能:按顺序创建有序顺序表
函数返回值:无
*****************************************/ 
void Create(Seqlist *L)
{
  int i;
  printf("\n n=");
  scanf("%d",&(L->last));
  for(i=1;i<=L->last;i++)
     {
         printf("data=%d ",i);
         L->data[i-1]=i;/*输入数据*/
     }
 } 
 
/*******************************************
函数名称:Insert
函数参数:SeqList *L 指针类型参数(引用类型),
          int i 顺序表中的位序
          DataType e 数据
函数功能:在顺序表中某一位置插入一个数据
函数返回值:1(正确)或-1(错误) 
******************************************/
int Insert(Seqlist *L,int i,DataType e)
{
    int j;
    i--;
    if(L->last==MAXSIZE)
    return -1;
    if(i<0||i>L->last-1)
    return -1;
    else
    {
        for(j=L->last-1;j>=i;j--)
        {
            L->data[j+1]=L->data[j];
        }
        L->data[i]=e;
        L->last++;
        return 1;
    }
 } 
/*******************************************
函数名称:Delete
函数参数:SeqList *L 指针类型参数(引用类型),
          int i 顺序表中的位序
函数功能:在顺序表中某一位置删除一个数据
函数返回值:1(正确)或-1(错误) 
******************************************/
 int Delete(Seqlist *L,int i)
 {
     int j;
     i--;
     if(i<0||i>L->last-1)
     return -1;
     else
     {
         for(j=i;j<L->last-1;j++)
         {
             L->data[j]=L->data[j+1];
         }
         L->last--;
     }
  } 
/*******************************************
函数名称:Location 
函数参数:SeqList *L 指针类型参数(引用类型),
          DataType e 数据
函数功能:在顺序表中某按照某一数值查找其位置 
函数返回值:i(返回数值的存储位置)或-1(错误) 
******************************************/
int Location(Seqlist *L,DataType e)
 {
     int i=0;
     while(i<=L->last&&L->data[i]!=e)
     {
         i++;
     }
    if(i>L->last)
    return -1;
    else
    return i;//返回存储位置 
  } 
  
/*******************************************
函数名称:Location 
函数参数:SeqList *L 指针类型参数(引用类型),
          DataType e 数据
函数功能:在顺序表中某按照某一数值查找其位序
函数返回值:i(返回数值的位序)或-1(错误) 
******************************************/
int Location2(Seqlist *L,DataType e)
 {
     int i;
     for(i=0;i<L->last;i++){
         if(L->data[i]==e)
         return i+1;//返回位序 
     }
     return 0;
  } 

/*******************************************
函数名称:Display 
函数参数:SeqList *L 指针类型参数(引用类型),
函数功能:按顺序打印输出顺序表中的元素 
函数返回值:无 
******************************************/
void Display(Seqlist *L)
{
    int i;
    for(i=0;i<L->last;i++)
    {
        printf("\ndata=%d",L->data[i]);
    }
 } 
 
 int main()
 {
     Seqlist L;
     Create(&L);
     //Insert(&L,5,9);
    //Delete(&L,3);
   int i=    Location(&L,3) ;
   printf("%d",i);
 //    Display(&L);
 }