#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 50
typedef struct
{
int *data;
int size;
}SqList;
void Initialise(SqList *List)
{
List->data=(int *)malloc(sizeof(int)*MAXSIZE);
List->size=0;
printf("---------申请空间结束");
}
void DelList(SqList *List)
{
free(List->data);
List->data=NULL;
List->size=0;
printf("\n删除成功");
}
int JudEmpty(SqList *List)
{
if(List->size==0)
return 1;
else
return -1;
}
int Length(SqList *List)
{
int size=0;
for(int i=0;List->data[i]!=NULL;i++)
size++;
return size;
}
void Output(SqList *List)
{
for(int i=0;i<List->size;i++)
{
printf("\n第%d个数据是: %d",i,List->data[i]);
}
printf("\n---------输出结束。");
}
void Insert(SqList *List,int l,int data)
{
if(l<1||l>List->size+1||l>=MAXSIZE)
{
printf("illgal location");
return -1;
}
for(int i=List->size;i>l-1;i--)
{
List->data[i]=List->data[i-1];
}
List->data[l-1]=data;
List->size++;
printf("\n插入位置: %d\n---------插入结束",l);
}
int Loc_Search(SqList *List,int l)
{
if(l<=0||l>List->size)
return -1;
return List->data[l-1];
}
int Val_Search(SqList *List,int value)
{
for(int i=0;i<List->size;i++)
if(List->data[i]==value)
return i+1;
return -1;
}
int Loc_Delete(SqList *List,int l,int *e)
{
if(l<=0||l>List->size)
return -1;
*e=List->data[l-1];
for(int i=l;i<List->size;i++)
List->data[i-1]=List->data[i];
List->size--;
return 1;
}
int Val_Delete(SqList *List,int value)
{
if(JudEmpty(List)==1)
{
return -1;
}
for(int i=0;i<List->size;i++)
if(List->data[i]==value)
return i+1;
return -2;
}
int main()
{
SqList test;int e;
Initialise(&test);
printf("\n是否为空:%d",JudEmpty(&test));
Insert(&test,1,1);
Insert(&test,2,2);
printf("\n是否为空:%d",JudEmpty(&test));
printf("\n顺序表长: %d",Length(&test));
Output(&test);
int c=Loc_Search(&test,0);
printf("\n按位查找: %d",c);
int b=Loc_Search(&test,1);
printf("\n按位查找: %d",b);
Loc_Delete(&test,2,&e);
printf("\n删除的值为:%d",e);
int a=Val_Search(&test,2);
printf("\n按值查找: %d",a);
printf("\n按值删除:%d",Val_Delete(&test,1));
DelList(&test);
return 0;
}