数据结构-线性表有序插入 C语言源码

版权声明:未经原作者允许不得转载本文内容,否则将视为侵权 https://blog.csdn.net/springhammer/article/details/88617703

数据结构-线性表有序插入 C语言源码

#include<stdio.h>
#include<stdlib.h>
struct YXCR{
	int*elem;
	int length;
};
void ko(YXCR& l,int n)
{
	
		int hj;
		l.elem=(int*)malloc(sizeof(int)*n);
		for(int k=0;k<n;k++)
		{
		scanf("%d",&hj);
		l.elem[k]=hj;	
		}
		l.length =n;
}
void xianshi(YXCR l)
{
	for(int i=0;i<l.length ;i++)
	{
		printf(" %d ",l.elem[i]);
	}
}
int hf(YXCR &l,int low,int high)
{
	int p=l.elem[low];
	int lo,h;
	lo=low;
	h=high;
	while(lo!=h)
	{
		while(lo!=h&&l.elem[h]>=p)
		{
			h--;
		}
		int fg=l.elem[lo];
		l.elem[lo]=l.elem[h];
		l.elem[h]=fg;
		while(lo!=h&&l.elem[lo]<=p)
		{
			lo++;
		}
		int xg;
		xg=l.elem[lo];
		l.elem[lo]=l.elem[h];
		l.elem[h]=xg;
	}
	return lo;
}
void fv(YXCR &l,int low,int high)
{
	if(low<high)
	{
		int oi;
		oi=hf(l,low,high);
		fv(l,low,oi-1);
		fv(l,oi+1,high);
	}
}
int insert(YXCR &l,int a,int hu,int &h)
{
	int f=l.length;
	for(int i=0;i<f;i++)
	{
		if(l.elem[i]==a)
		{
			l.elem=(int*)realloc(l.elem,(l.length+1)*sizeof(int));
			for(int j=l.length ;j>i;j--)
			{
				l.elem[j]=l.elem[j-1];
			}
			l.length++;  
			l.elem[i]=hu;
			return  1;
		}
		h++;
	}
	return 0;
}
main()
{
	int n;
	printf("请输入表长");
	scanf("%d",&n);
	YXCR l;
	printf("\n开始输入表中元素");
	ko(l,n);
	int low=0;
	int  high=l.length -1;
	fv(l,low,high);
	xianshi(l);
	printf("\n该插入操作为在特定元素前插入一指定元素,请输入特定元素和指定元素");
	int a,hu,h=0;
	scanf("%d",&a);
	scanf("%d",&hu);
	int bh=insert(l,a,hu,h);
	if(bh==0)
	{
		printf("无特定元素"); 
	 } 
	 else{
	 	printf("比较次数为%d\n",h);
	 	h=l.length-h-1;
	 	printf("移动次数为%d",h);
	 }
	 xianshi(l);
	 printf("\n%d",l.length );
	return 0;
} 

在这里插入图片描述
快看,这才是重点!我想能看到这里的同学,无外乎两种人:来拷贝代码的人 和 来拷贝代码的人。

但,在拷贝走的时候,你要想清楚一件事,把代码拷走之后有个蛋用,搞明白对你来说才是最重要的。

好了,就酱紫。

老铁,这要是都不赞,说不过去吧!!!哦,对了,你这么好看,关注一下呗。。。

最后对自己说:
你现在所遭遇的每一个不幸,都来自一个不肯努力的曾经。

猜你喜欢

转载自blog.csdn.net/springhammer/article/details/88617703
今日推荐