数据结构-线性表有序插入 C语言源码
数据结构-线性表有序插入 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;
}
快看,这才是重点!我想能看到这里的同学,无外乎两种人:来拷贝代码的人 和 来拷贝代码的人。
但,在拷贝走的时候,你要想清楚一件事,把代码拷走之后有个蛋用,搞明白对你来说才是最重要的。
好了,就酱紫。
老铁,这要是都不赞,说不过去吧!!!哦,对了,你这么好看,关注一下呗。。。
最后对自己说:
你现在所遭遇的每一个不幸,都来自一个不肯努力的曾经。