顺序表基本操作 - 增删查改 -【C语言】

运行截图

#include <stdio.h>
#define MAX 255
#define DataType int
typedef struct List
{
	DataType data[MAX];
	int last;
}list;
void output(list L);
list init_list(list L)
{
	L.last=0;
	return L;
}

/*
list insert(list L,DataType x) //尾插
{
	L.data[L.last]=x;
	L.last++;
	return L;
}
*/

list insert(list L,DataType x)//插入到第一个比x大的数前面 ,没有的话就插在最后面 
{
	int i,j,p=L.last;
	for(i=0; i<L.last; i++)
	{
		if(L.data[i]>x)
		{
			p=i;
			for(j=L.last; j>i; j--)
			{
				L.data[j]=L.data[j-1];
			}
			break;
		}
	}
	L.data[p]=x;
	L.last++;

	return L;
}

list insert_i(list L,int i,DataType x)//插入到第i个位置 
{	
	if(i>L.last) 
	{
		printf("Index Error.\n");
	}
	else if(L.last>MAX)
	{
		printf("List was full.\n");
	}
	else
	{
		for(int j=L.last; j>i; j--)
		{
			L.data[j]=L.data[j-1];
		}
		L.data[i]=x;
		L.last++;
	}
	return L;
}

void output(list L)
{
	for(int i=0; i<L.last; i++)
	{
		printf("%d ",L.data[i]);
	}
	printf("\n");
}

list Delete(list L,int i)
{
	for(int j=i; j<L.last; j++)
	{
		L.data[j]=L.data[j+1];
	}
	L.last--;
	return L;
}

int search(list L,DataType x)
{
	for(int i=0; i<L.last; i++)
	{
		if(L.data[i]==x)
		{
			return i;
		}
	}
	return -1;
}

list modifly(list L,int index,DataType x)
{
	L.data[index]=x;
	return L;
}

list merge_AB_to_A(list LA,list LB)
{
	for(int i=0; i<LB.last; i++)
	{
		LA=insert(LA,LB.data[i]);
	}
	return LA;
}

list  merge_AB_to_C(list La,list Lb,list Lc)
{
	int ap=0,bp=0;
	for(int j=0; j<La.last+ Lb.last; j++)
	{
		if(ap== La.last)
		{
			Lc.data[Lc.last++]=Lb.data[bp++];
			continue;
		}
		if(bp== Lb.last)
		{
			Lc.data[Lc.last++]=La.data[ap++];
			continue;
		}
		if(La.data[ap]<=Lb.data[bp]) Lc.data[Lc.last++]=La.data[ap++];
		else Lc.data[Lc.last++]=Lb.data[bp++];
	}
	return Lc;
}

int main()
{
	list La,Lb,Lc;
	La=init_list(La);
	Lb=init_list(Lb);
	Lc=init_list(Lc);

	printf("L.last:%d\n",La.last);
	printf("L.last:%d\n",Lb.last);
	printf("L.last:%d\n",Lc.last);


	La=insert(La,1);
	La=insert(La,3);
	La=insert(La,5);
	La=insert(La,7);
	La=insert(La,9);

	Lb=insert(Lb,2);
	Lb=insert(Lb,4);
	Lb=insert(Lb,6);
	Lb=insert(Lb,8);
	Lb=insert(Lb,10);

	printf("La:");
	output(La);
	printf("Lb:");
	output(Lb);

	La=Delete(La,0);
	printf("删除La的第1个元素:");
	output(La);

	int num=6;
	//printf("输入一个数:");
	//scanf("%d",&num);

	int p=search(Lb,num);
	if(p>=0)
	{
		printf("删除%d并输出删除后的Lb:",num);
		Lb=Delete(Lb,p);
		output(Lb);
	}

	Lc=merge_AB_to_C(La,Lb,Lc);
	//Lc=merge_AB_to_A(La,Lb);
	printf("合并后的Lc:");
	output(Lc);
	return 0;
}


版权声明:本文为weixin_44882124原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。