c 언어 구현 두 갈래 더미
priorityqueue create(int max)
{
priorityqueue h;
h = (priorityqueue)malloc(sizeof(struct heap));
h->data = (*int)malloc(sizeof(int)*(max+1));
h->data[0] = INT_MIN;//
h->size = 0;
h->capacity = max;
return h;
}
삽입 작업:
void insert(priorityqueue h,int data)
{
//
if(h->size==h->capacity)
{
printf("full!
");
return ;
}
h->size++;
int i;
for(int i = h->size;h->data[i/2]>data;i/=2)
{
h->data[i] = h->data[i/2];
}
h->data[i] = data;
}
삭제 작업:
int deleted(priorityqueue h,int data)
{
if(h->size==0)
{
printf("failed
");
return 0 ;
}
int lastdata = h->data[h->size--];
int mindata = h->data[1];
int i,child;
for(int i =1 ; i*2<=h->size ; i =child)
{
// i
child = 2*i;
//
if(child!=h->size&&h->data[child]>h->data[2*i+1]){
child++;
}
if(lastdata > h->data[child])
{
h->data[i] =h->data[child];
}
else break;
}
h->data[i] = lastdata;
return mindata;
}
전체 코드:
#include
#include
#include
typedef struct heap* priorityqueue;
struct heap{
int *data;
int size;//
int capacity;//
};
priorityqueue create(int max)
{
priorityqueue h;
h = (priorityqueue) malloc (sizeof(struct heap));
h->data = (int*)malloc(sizeof(int)*(max+1));
h->data[0] = INT_MIN;//
h->size = 0;
h->capacity = max;
return h;
}
void insert(priorityqueue h,int data)
{
//
if(h->size==h->capacity)
{
printf("full!
");
return ;
}
h->size++;
int i;
for(int i = h->size;h->data[i/2]>data;i/=2)
{
h->data[i] = h->data[i/2];
}
h->data[i] = data;
}
int deleted(priorityqueue h,int data)
{
if(h->size==0)
{
printf("failed
");
return 0 ;
}
int lastdata = h->data[h->size--];
int mindata = h->data[1];
int i,child;
for(int i =1 ; i*2<=h->size ; i =child)
{
// i
child = 2*i;
//
if(child!=h->size&&h->data[child]>h->data[2*i+1]){
child++;
}
if(lastdata > h->data[child])
{
h->data[i] =h->data[child];
}
else break;
}
h->data[i] = lastdata;
return mindata;
}
int main()
{
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.