顺序表
#include<stdio.h>
#include<stdlib.h>
#define ElementType int
#define MAXSIZE 100
typedef struct{
ElementType Data[MAXSIZE];
int Last;
}List;
List *MakeEmpty(){
List *PtrL=(List *)malloc(sizeof(List));
PtrL->Last=-1;
return PtrL;
}
int Find(ElementType X,List *PtrL){
int i=0;
while(i<=PtrL->Last && PtrL->Data[i]!=X)
i++;
if(i<=PtrL->Last) return i;
else return -1;
}
void Insert(ElementType X,int i,List *PtrL){
int j;
if(PtrL->Last==MAXSIZE-1){
printf("表满");
return;
}
if(i<0 || i>PtrL->Last+1){
printf("插入位置不合法");
return;
}
for(j=PtrL->Last;j>=i;j--)
PtrL->Data[j+1]=PtrL->Data[j];
PtrL->Data[i]=X;
PtrL->Last++;
return;
}
void Delete(int i,List *PtrL){
int j;
if(i<0 || i>PtrL->Last){
printf("不存在下标号为%d元素",i );
return;
}
for (j=i+1;j<=PtrL->Last;j++)
PtrL->Data[j-1]=PtrL->Data[j];
PtrL->Last--;
return ;
}
void Traverse(List *PtrL){
int i;
for(i=0;i<=PtrL->Last;i++){
printf("%d ",PtrL->Data[i]);
}
printf("\n");
return;
}
int main(int argc, char const *argv[])
{
List *P=MakeEmpty();
int x,i,n;
printf("请输入元素个数:");
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x);
Insert(x,i,P);
}
Traverse(P);
printf("请输入要删除的元素下标号:");
scanf("%d",&i);
Delete(i,P);
Traverse(P);
printf("请输入要查找的元素值:");
scanf("%d",&x);
printf("元素的下标号为:%d\n",Find(x,P));
return 0;
}