数据结构中顺序表的基本操作(纯C语言)

#include 
#define MAX 10
typedef int ElemType;

typedef struct
{
	ElemType elem[MAX];
	int last;
}SqList;

//初始化
void InitList(SqList *L)
{
	L->last=0;
}

//当前元素个数
int LenList(SqList L)
{
	return L.last;
}

//插入操作
int InsertList(SqList *L,int i,ElemType x)
{
	int k;
	if(L->last>=MAX)
	{
		printf("表已满,无法插入\n");
		return 0;
	}
	else if(i<0 || i>L->last+1)
	{
		printf("插入位置不合法\n");
		return 0;
	}
	else
	{
		for(k=L->last;k>i-1;k--)
			L->elem[k]=L->elem[k-1];
		L->elem[i-1]=x;
		L->last++;
		return 0;
	}
}

//删除操作
int DelList(SqList *L,int i)
{
	int k;
	if((L->last<=0) || (i<0) || (i>L->last))
	{
		printf("删除位置不合法\n");
		return 0;
	}
	else
	{
		for(k=i;k<=L->last-1;k++)
			L->elem[k-1]=L->elem[k];
		L->last--;
		return 0;
	}
}

///查找元素
int LocList(SqList L,ElemType x)
{
	int i;
	for(i=0;ilast/2,n=L->last;
	ElemType t;
	for(i=0;ielem[i];
		L->elem[i]=L->elem[n-1-i];
		L->elem[n-1-i]=t;
	}
	return 0;
}

//合并线性表
int MergeList(SqList *La,SqList *Lb,SqList *Lc)
{
	int i=0,j=0,k=0;
	while(ilast && jlast)
	{
		if(La->elem[i]elem[j])
		{
			Lc->elem[k]=La->elem[i];
			i++;k++;
		}
		else
		{
			Lc->elem[k]=Lb->elem[j];
			j++;k++;
		}
	}
	while(ilast)
	{
		Lc->elem[k++]=La->elem[i++];
	}

	while(jlast)
	{
		Lc->elem[k++]=Lb->elem[j++];
	}
	Lc->last=k;
	return 0;
}

int main()
{
	SqList La,Lb,Lc;
	int i,x;
	int n,m;//线性表长度

	InitList(&La);//初始化

	//输入La
	printf("请输入线性表La的长度:");
	scanf("%d",&n);
	La.last=n;
	printf("请输入线性表La中的元素\n");
	for(i=0;i

你可能感兴趣的:(数据结构中顺序表的基本操作(纯C语言))