(C语言)线性表的顺序存储的实现

//今天看了数据结构中线性表的顺序存储结构部分,写了一个简单的结构
#include

#define ListMaxSize 50

typedef struct Arr
{
	int arr[ListMaxSize];
	int cnt;		            //当前有效元素个数
}SqList;


void InitList(SqList *);	    //初始化
int Isempty(SqList *);					//判断是否为空
int Isfull(SqList *);    		        //判断是否为满
void PrintList(SqList *);				//线性表的遍历
int ListInsert(SqList *,int ,int *);				//指定位置插入一个元素
int ListDelete(SqList *,int ,int *);				//删除指定位置的元素
int Getelem(SqList *,int ,int *);					//获取指定位置的元素

int main()
{
	int val;
	SqList a1;
	InitList(&a1);
	PrintList(&a1);
	ListInsert(&a1,1,1);
	ListInsert(&a1,1,2);
	ListInsert(&a1,1,3);
	PrintList(&a1);

	if(ListDelete(&a1,1,&val))
		printf("删除的元素为%d\n",val);
	else printf("删除失败\n");

	PrintList(&a1);

	if(Getelem(&a1,1,&val))
		printf("GET值为%d\n",val);
	else printf("GET元素失败!\n");

	return 0;
}

//初始化
void InitList(SqList *pa1)
{
	pa1->cnt=0;
	return;
}

//判断表是否为空
int Isempty(SqList *pa1)
{
	if(pa1->cnt==0)
		return 1;
	else return 0;
}

///判断表是否为满
int Isfull(SqList *pa1)
{
	if(pa1->cntcnt;i++)
			printf("%d ",pa1->arr[i]);
		printf("\n");
	}
}

//指定位置插入一个元素
int ListInsert(SqList *pa1,int i,int e)
{
	int j;
	if(i<1||i>pa1->cnt+1)
		return 0;
	if(Isfull(pa1))
		return 0;
	for(j=pa1->cnt;j>=i;j--)
		pa1->arr[j]=pa1->arr[j-1];
	pa1->arr[j]=e;
	pa1->cnt++;
	return 1;
}

//删除指定位置的元素,用val传参返回删除元素值
int ListDelete(SqList *pa1,int i,int *pval)
{
	int j;
	if(i<1||i>pa1->cnt)
		return 0;
	*pval=pa1->arr[i-1];
	for(j=i;jcnt;j++)
		pa1->arr[j-1]=pa1->arr[j];
	pa1->cnt--;
	return 1;
}

//GET指定位置元素,用val传参返回
int Getelem(SqList *pa1,int i,int *pval)
{
	if(i<1||i>pa1->cnt)
		return 0;
	else
	{
		*pval=pa1->arr[i-1];
		return 1;
	}
}

你可能感兴趣的:((C语言)线性表的顺序存储的实现)