学习内容:线性表:存储,插入,删除,求长度,遍历等等。
分为3部分:头文件,函数,主函数
#include "SequenceList.h"
#include <stdlib.h>
#include <stdio.h>
int SequenceInit(SqList *l)
{
if(NULL==l)
{
return FAILURE;
}
l->length=0;
l->data=(ElemType *)malloc(sizeof(ElemType));
if(NULL==l->data)
{
return FAILURE;
}
return SUCCESS;
}
int SequenceInsrt(SqList *l,int p,ElemType e)
{
int i;
if(NULL==l)
{
return FAILURE;
}
if(p > l->length+1 || l->length >= SIZE || p<1)
{
return FAILURE;
}
for(i=0;i < l->length-p+1;i++)
{
l->data[l->length-i]=l->data[l->length-i-1];
}
l->data[p-1]=e;
l->length++;
return SUCCESS;
}
int SequenceLength(SqList l)
{
return l.length;
}
int SequenceEmpty(SqList l)
{
return (l.length==0) ? TRUE : FALSE;
}
int GetElem(SqList l,int p,ElemType *e)
{
if(p < 1 || p > l.length)
{
return FAILURE;
}
*e=l.data[p-1];
return SUCCESS;
}
int SequenceTraverse(SqList l,void (*p)(ElemType))
{
if(p==NULL)
{
return FAILURE;
}
int i;
for(i=0; i < l.length; i++)
{
p(l.data[i]);
}
return SUCCESS;
}
int LocateElem(SqList l,ElemType e)
{
int i;
for(i = 0; i<l.length;i++)
{
if(e==l.data[i])
{
return i+1;
}
}
return FAILURE;
}
int SquenceDelete(SqList *l,int p,ElemType *e)
{
if(NULL==l)
{
return FAILURE;
}
if(p < 1 || p > l->length)
{
return FAILURE;
}
int i;
*e=l->data[p-1];
for(i=0;i<l->length;i++)
{
l->data[p-1+i]=l->data[p+i];
}
}
int SequenceClear(SqList *l)
{
if(l==NULL)
{
return FAILURE;
}
l->length=0;
return SUCCESS;
}
int SequenceDestroy(SqList *l)
{
if(l==NULL)
{
return FAILURE;
}
l->length=0;
free(l->data);
l->data=NULL;
return SUCCESS;
}
#include "SequenceList.h"
#include <stdio.h>
#include <stdlib.h>
void print(ElemType e)
{
printf("%d",e);
}
int main()
{
int i;
int ret;
SqList list;
srand(time(NULL));
ret=SequenceInit(&list);
if(ret==SUCCESS)
{
printf("Init SUCCESS!\n");
}
else
{
printf("Init FAILURE!\n");
}
for(i=0;i<5;i++)
{
ret=SequenceInsrt(&list, i+1,rand()%10);
if(FAILURE == ret)
{
printf("Insert Failure\n");
}
else
{
printf("Insert Success\n");
}
}
ret=SequenceLength(list);
printf("length is:%d\n",ret);
ret=SequenceEmpty(list);
if(ret==TRUE)
{
printf("is empty!\n");
}
else
{
printf("not empty!\n");
}
int p=3;
ElemType e;
ret=GetElem(list,p,&e);
if(FAILURE==ret)
{
printf("Get Element Failure!\n");
}
else
{
printf("%dth element is%d!\n",p,e);
}
ret = SequenceTraverse(list,print);
if(ret == FAILURE)
{
printf("Traverse Failure!\n");
}
else
{
printf("Traverse Success!\n",p,e);
}
e=3;
ret=LocateElem(list,e);
if(ret==FAILURE)
{
printf("%d is not exist!\n",e);
}
else
{
printf("%d is %dth element!\n",e,ret);
}
ret=SquenceDelete(&list,p,&e);
if(SUCCESS==ret)
{
printf("Delete %d Success!\n",e);
}
else
{
printf("Delete Failure!\n");
}
ret =SequenceClear(&list);
if(SUCCESS==ret)
{
printf("Clear Success!\n",e);
}
else
{
printf("Clear Failure!\n");
}
ret =SequenceDestroy(&list);
if(SUCCESS==ret)
{
printf("Destroy Success!\n",e);
}
else
{
printf("Destroy Failure!\n");
}
return 0;
}