#include "stdio.h"
#include "stdlib.h"
typedef struct {
int elem[100];
int last;}SeqList;
int InitSeqList(SeqList *L);
int printSeqList(SeqList *L);
int GetdataSeqList(SeqList*L,int i);
int LocateSeqList(SeqList*L,int e);
int InsPSeqList(SeqList *L,int i,int e);
int InsVSeqList(SeqList *L,int e);
int DelPSeqList(SeqList *L,int i,int *e);
int DelVSeqList(SeqList *L,int e);//主函数 main(){
SeqList L;
int sel,i,e,x;InitSeqList(&L);while(1){printf("===============================\n");printf("0.退出\n");printf("1.按位置查找元素\n");printf("2.按元素值查找元素\n");printf("3.按位置插入元素\n");printf("4.按元素值插入元素\n");printf("5.按位置删除元素\n");printf("6.按元素值删除元素\n");printf(" 说明:表中位置从0开始\n");printf("===============================\n");printSeqList(&L);printf("选择操作:");scanf("%d",&sel);if(sel==0)break;switch(sel){case1:printf("\t1.按位置查找元素\n");printf("\t输入位置:");scanf("%d",&i);
e=GetdataSeqList(&L,i);if(e<0)printf("\t\t位置错误!\n\n");elseprintf("\t\t位置[%d]处的元素为[%d]\n\n",i,e);break;case2:printf("\t2.按元素值查找元素\n");printf("\t输入元素值:");scanf("%d",&e);
i=LocateSeqList(&L,e);if(i<0)printf("\t\t表中没有元素[%d]!\n\n",e);elseprintf("\t\t元素[%d]所在位置为为[%d]\n\n",e,i);break;case3:printf("\t3.按位置插入元素\n");printf("\t输入插入位置和元素值:");scanf("%d %d",&i,&e);
x=InsPSeqList(&L,i,e);if(!x)printf("\t\t插入位置[%d]错误!\n\n",i);break;case4:printf("\t4.按元素值插入元素\n");printf("\t输入元素值:");scanf("%d",&e);
x=InsVSeqList(&L,e);break;case5:printf("\t5.按位置删除元素\n");printf("\t输入删除位置:");scanf("%d",&i);
x=DelPSeqList(&L,i,&e);if(!x)printf("\t\t删除位置[%d]错误!\n\n",i);break;case6:printf("\t5.按元素值删除元素\n");printf("\t输入元素值:");scanf("%d",&e);
x=DelVSeqList(&L,e);if(x<0)printf("\t\t表中没有元素[%d]!\n\n",e);break;
deauft:printf("选项错误!\n");break;}system("pause");}}//初始化顺序表函数
int InitSeqList(SeqList *L){
int i;for(i=0;i<6;i++)L->elem[i]=2*i+1;L->last=5;}//显示顺序表函数
int printSeqList(SeqList *L){
int i;printf("\n表长:%d,表元素:",L->last+1);for(i=0;i<L->last;i++)printf("%d ",L->elem[i]);printf("\n");}//按位置查找函数
int GetdataSeqList(SeqList*L,int i){if(i<0||i>L->last)return(-1);return(L->elem[i]);}//按元素值查找函数
int LocateSeqList(SeqList*L,int e){
int i;for(i=0;i<=L->last;i++)if(L->elem[i]==e)break;if(i<=L->last)return(i);elsereturn(-1);}//按位置插入函数
int InsPSeqList(SeqList *L,int i,int e){
int j;if(i<0||i>L->last+1)return(0);printf("i=%d last=%d\n",i,L->last);for(j=L->last;j>=i;j--)L->elem[j+1]=L->elem[j];L->elem[i]=e;L->last++;return(1);}//按元素值插入函数
int InsVSeqList(SeqList *L,int e){
int j;for(j=L->last;j>=0&&e<L->elem[j];j--)L->elem[j+1]=L->elem[j];L->elem[j+1]=e;L->last++;return(1);}//按位置删除函数
int DelPSeqList(SeqList *L,int i,int *e){
int j;if(i<0||i>L->last)return(0);*e=L->elem[i];for(j=i+1;j<L->last;j++)L->elem[j-1]=L->elem[j];L->last--;return(1);}//按元素值删除函数
int DelVSeqList(SeqList *L,int e){
int i,j;for(i=0;i<=L->last;i++)if(e==L->elem[i])break;if(i>L->last)return(-1);for(j=i+1;j<L->last;j++)L->elem[j-1]=L->elem[j];L->last--;return(i);}