#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){
case 1:printf("\t1.按位置查找元素\n");printf("\t输入位置:");scanf("%d",&i);
e=GetdataSeqList(&L,i);
if(e<0) printf("\t\t位置错误!\n\n");
else printf("\t\t位置[%d]处的元素为[%d]\n\n",i,e);
break;
case 2:printf("\t2.按元素值查找元素\n");printf("\t输入元素值:");scanf("%d",&e);
i=LocateSeqList(&L,e);
if(i<0) printf("\t\t表中没有元素[%d]!\n\n",e);
else printf("\t\t元素[%d]所在位置为为[%d]\n\n",e,i);
break;
case 3: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;
case 4:printf("\t4.按元素值插入元素\n");printf("\t输入元素值:");scanf("%d",&e);
x=InsVSeqList(&L,e);
break;
case 5:printf("\t5.按位置删除元素\n");printf("\t输入删除位置:");scanf("%d",&i);
x=DelPSeqList(&L,i,&e);
if(!x) printf("\t\t删除位置[%d]错误!\n\n",i);
break;
case 6: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);
else return(-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);
}
seqlist 链表
最新推荐文章于 2022-04-05 09:42:48 发布