#define SIZE 10
typedef struct Sqlist
{
int elem[SIZE];
int length;
}Sqlist;
void InitSqlist(Sqlist *plist);
bool Insert(Sqlist *plist,int pos,int val);
bool Delete(Sqlist *plist,int pos);
void Destroy(Sqlist *plist);
void Clear(Sqlist *plist);
bool IsEmpty(Sqlist *plist);
int GetLength(Sqlist *plist);
bool GetElem(Sqlist *plist,int pos,int *rtval);
void Show(Sqlist *plist);
#endif
#include "sqlist.h"
#include <stdio.h>
#include <assert.h>
void InitSqlist(Sqlist *plist)
{
assert(plist!=NULL);
assert(plist->elem!=NULL);
plist->length=0;
}
bool Insert(Sqlist *plist,int pos,int val)
{
if(pos<0 || pos >plist->length || pos>=SIZE)
{
return false;
}
for(int i=plist->length-1;i>=pos;i--)
{
plist->elem[i+1]=plist->elem[i];
}
plist->elem[pos]=val;
plist->length+=1;
return true;
}
bool Delete(Sqlist *plist,int pos)
{
if(pos<0 || pos>=SIZE || pos>=plist->length)
{
return false;
}
for(int i=pos;i<plist->length;i++)
{
plist->elem[i]=plist->elem[i+1];
}
plist->length-=1;
return true;
}
void Destroy(Sqlist *plist)
{
Clear(plist);
}
void Clear(Sqlist *plist)
{
plist->length=0;
}
bool IsEmpty(Sqlist *plist)
{
return plist->length==0;
}
int GetLength(Sqlist *plist)
{
return plist->length;
}
bool GetElem(Sqlist *plist,int pos,int *rtval)
{
if(pos<0 || pos>=SIZE || pos>=plist->length)
{
return false;
}
*rtval=plist->elem[pos];
return true;
}
void Show(Sqlist *plist)
{
for(int i=0;i<plist->length;i++)
{
printf("%d ",plist->elem[i]);
}
printf("\n");
}
#include "sqlist.h"
#include <stdio.h>
int main()
{
Sqlist plist;
int rtval;
InitSqlist(&plist);
for(int i=0;i<SIZE;i++)
{
Insert(&plist,0,i);
}
Show(&plist);
printf("%d\n",GetLength(&plist));
printf("%d\n",GetElem(&plist,-1,&rtval));
printf("%d\n",GetElem(&plist,7,&rtval));
printf("%d\n",rtval);
printf("%d\n",IsEmpty(&plist));
printf("%d\n",Delete(&plist,5));
printf("%d\n",GetLength(&plist));
Clear(&plist);
printf("%d\n",GetLength(&plist));
printf("%d\n",IsEmpty(&plist));
}