change by XOR
unknown
c_cpp
4 years ago
1.3 kB
10
Indexable
#include <stdio.h>
#include <stdlib.h>
//#define INTEGER
#define STRUCT
#ifdef INTEGER
int main() {
int arr[] = { 1,2,3,4,5,6,7,8 };
int* prt1 = &arr[4];
int* prt2 = &arr[6];
printf("prima del tentato scambio %d %d \n\n", arr[4], arr[6]);
int* tmp = prt1;
*prt1 ^= *prt2;
*prt2 ^= *prt1;
*prt1 ^= *prt2;
printf("%d %d dopo tentato scambio\n", arr[4], arr[6]);
}
#endif // INTEGER
#ifdef STRUCT
typedef struct {
int key;
double prio;
} HeapElem;
typedef struct {
HeapElem* heap;
int* pos; /*da non utilizzare per la risoluzione*/
int n; /* quante coppie (chiave, prio) sono effettivamente presenti nello heap */
int size; /* massimo numero di coppie (chiave, prio) che possono essere contenuti nello heap */
} MinHeap;
int main() {
static MinHeap H;
int i;
H.heap = (HeapElem*)malloc(10 * sizeof(HeapElem));
H.size = 10;
H.n = 5;
for ( i = 0; i < H.n; i++)
{
H.heap[i].prio = i+1;
H.heap[i].key = 2 * i;
printf(" %.2f,%d\t", H.heap[i].prio, H.heap[i].key);
}
HeapElem* father;
int fPos, j = 3;
HeapElem* child = &H.heap[i];
if (j % 2 == 0)
{
j = j - 1;
}
fPos = j / 2;
father = &H.heap[fPos];
while (father->prio > child->prio)
{
}
}
#endif // STRUCT
Editor is loading...