
已解决问题
谷歌物雨霏霏用户在2015.10.14提交了关于“暴力摩托C语言中的堆和栈的定义?”的提问,欢迎大家涌跃发表自己的观点。目前共有2个回答,最后更新于2025-02-14T04:32:05。希望大家能够帮助她。详细问题描述及疑问:期待您的答案,你无异于雪中送炭,让我感激涕零 !
详细问题描述及疑问:期待您的答案,你无异于雪中送炭,让我感激涕零 !
在**结构上要知道堆栈,尽管我们这么称呼它,但实际上堆栈是两种**结构:堆和栈。
堆和栈都是一种**项按序排列的数
栈就像装**的桶或箱子
我们先从大家比较
这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比
堆像一棵倒过来的树
而堆就不同了,
通常我们所说的堆的**结
堆的
由于堆的这个特性,常用来实现优先
堆算
#include<stdio.h>
//hea
voidheapSort(inta
//print
v
{
inta[]={2,64,42
n=sizeof(a)/siz
//sort
heapSort(a,n);
//print
print(a,n);
}
voidchange(inta[],inti,intj)
{
inttemp;
a[i]=a[j];
a[j]
}
voidshi
{
inti,j;
i=left;
j=i*2+1;
while(j<=right)
{
if(j+1<=right&&a[j]<a[j+1])j++;
if(a[j]>a[i])
{
change(a,i,j);
i=j;
j=j*2+1;
}
else
bre**;
}
}
voidcreateh**eap(inta[],intn)
{
inti=0;
for(i=(n-2)/2;i>=0;i--)
?shiftDown(a,i,n-1);
}
voidheapSort(inta[],intn)
{
inti;
inttemp;
createh**eap(a,n);
for(i=n-1;i>0;)
{
temp=a[0];
a[0]=a[i];
a[i]=temp;
shiftDown(a,0,--i);
}
}
//printthesortedarray
voidprint(inta[],intn)
{
inti;
for(i=0;i<n;i++)
printf("%d",a[i]);
}