- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构经典算法C语言版
//插入排序法
void InsertSort()
{
int s[100];
int n,m,j,i=0,temp1,temp2;
printf(请输入待排序的元素个数:);
scanf(%d,n);
printf(请输入原序列:);
for (i=0; in; i++)
{
scanf(%d,s[i]);
}
printf(请输入待插入的数:);
scanf(%d,m);
if (ms[n-1]);
s[n]=m;
for (i=0; in; i++)
{
if (s[i]m)
{
temp1=s[i];
s[i]=m;
for (j=i+1; jn+1; ++j)
{
temp2=s[j];
s[j]=temp1;
temp1=temp2;
}
break;
}
}
printf(排序后:);
for(i=0;in+1;i++)
{
printf(%4d,s[i]);
}
printf(\n);
}
//堆排序
static a[8] = {0,25,4,36,1,60,10,58,};
int count=1;
void adjust(int i,int n)
{
int j,k,r,done=0;
k = r = a[i];
j = 2*i;
while((j=n)(done==0))
{
if(jn)
{
if(a[j]a[j+1])
j++;
}
if(k=a[j])
done = 1;
else
{
a[j/2] = a[j];
j = 2* j;
}
}
a[j/2] = r;
}
void heap(int n)
{
int i,j,t;
for(i =n/2;i0;i--)
adjust(i,n);
printf(\n初始化成堆=== );
for(i = 1;i 8;i++)
printf(%5d,a[i]);
for(i = n-1;i0;i--)
{
t = a[i+1];
a[i+1] = a[1];
a[1] = t;
adjust(1,i);
printf(\n第%2d步操作结果===,count++);
for(j = 1;j8;j++)
printf(%5d,a[j]);
}
}
void HeapSort()
{
int i;
printf(源数据为:);
for(i = 1;i8;i++)
printf(%5d,a[i]);
heap(7);
printf(\n排序后的数据为:);
for(i = 1;i8;i++)
printf(%5d,a[i]);
printf(\n);
}
//堆栈的基本应用
int *p;
int *tos;
int *bos;
/*添加一个数据放到堆栈对顶端*/
void push(int i)
{
if(p bos)
{
printf(堆栈以满\n);
return;
}
*p = i;
p++;
}
/*丛堆栈顶端取出一个数据*/
int pop(void)
{
p--;
if(p tos)
{
printf(堆栈下溢\n);
return 0;
}
return *p;
}
void StackMain()
{
int a,b;
char s[80];
p = (int *)malloc(Max*sizeof(int));
if(!p)
{
printf(分配内存失败);
文档评论(0)