/*顺序表*/
#include<stdio.h>
#include<stdlib.h>
#define InitSize 10
typedef struct
{
int * data;
int MaxSize;
int length;
}SeqList;
void InitList(SeqList &L)
{
L.data=(int *)malloc(InitSize*sizeof(int)); //动态分配内存
for(int i=0;i<InitSize;i++)
{
L.data[i]=0;
}
L.length=0;
L.MaxSize=InitSize;
return;
}
bool ListInsert(SeqList &L,int i,int e)
{
if(i<1||i>L.length+1)
{
return false;
}
if(L.length>=L.MaxSize)
{
return false;
}
for(int j=L.length;j>=i;j--)
{
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;
L.length++;
return true;
}
bool ListDelete(SeqList &L,int i,int &e)
{
if(i<0||i>L.length)
{
return false;
}
e=L.data[i-1];
for(int j=i;j<L.length;j++)
{
L.data[j-1]=L.data[j];
}
L.length--;
return true;
}
int GetElem(SeqList L,int i)
{
return L.data[i-1];
}
int LocateElem(SeqList L,int e)
{
for(int i=0;i<L.length;i++)
{
if(L.data[i]==e)
{
return i+1;
}
}
return 0;
}
void PrintList(SeqList L)
{
for(int i=0;i<L.length;i++)
{
printf("%d ",L.data[i]);
}
printf("\n") ;
return;
}
int main(void)
{
SeqList L;
int e=1;
InitList(L);
ListInsert(L,1,1);
ListInsert(L,2,2);
ListInsert(L,3,3);
ListInsert(L,4,3);
ListInsert(L,5,5);
PrintList(L);
if(ListDelete(L,4,e))
{
printf("删除第四个元素的值为%d\n",e);
}
else{
printf("位序不合法\n");
}
printf("位置为3的元素的值为%d\n",GetElem(L,3));
printf("元素3的位置为%d\n",LocateElem(L,3));
PrintList(L);
return 0;
}