giannimesa
20-04-2010, 17:09
Ciao a tutti, sto lavorando ad un progetto di un simulatore che necessita di una struttura come la Coda con priorità.
L'idea innanzitutto è di crearmi una Linked List e poi eventualmente affiancarla ad una struttura tipo Heap.
Sto facendo delle prove nella realizzazione di questa "Linked list" semplicemente creando diversi elementi collegando e stampando su console per ogni elemento:
Identificativo Elemento, Identificativo elemento precedente, Identificativo elemento successivo.
Ogni elemento della coda ha all'interno un elemento "job".
Il problema è che nel momento in cui vado a stampare l'elemento precedente o successivo con l'istruzione:
printf("PREC = %d , SUCC = %d \n", p->prev->jobElement.idJob, p->next->jobElement.idJob);
l'esecuzione di questa istruzione e in particolare il fatto di accedere agli elementi "jobElement" mi blocca inaspettatamente il programma (uso eclipse) senza alcun messaggio di errore (almeno un ubuntu).
Ecco i file:
FILE JOB.H
typedef struct job{
int idJob;
int priority;
int releaseTime;
int exeTime;
int endTime; // variable used only by periodic jobs
int numProc;
int processorOwner;
}job;
FILE QUEUEELEMENT.H
#include "job.h"
typedef struct queueElement{
job jobElement;
struct queueElement* next;
struct queueElement* prev;
}queueElement;
FILE MAIN.C
#include "job.h"
#include "queueElement.h"
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <malloc.h>
int main(){
int i;
printf("simulazione di coda");
queueElement* p;
queueElement* temp;
p=(queueElement *)malloc(sizeof(queueElement));
p->jobElement.idJob=0;
for(i =10; i>0; i--){
p->next = (queueElement *)malloc(sizeof(queueElement));
temp = p->next;
temp->jobElement.idJob=i;
printf("inserito elemento %d ",p->jobElement.idJob);
if(i<10){
printf("PREC = %d , SUCC = %d \n", p->prev->jobElement.idJob, p->next->jobElement.idJob);
}
p=temp;
}
}
Chi mi riesce a dare una mano? Grazie mille a tutti!
L'idea innanzitutto è di crearmi una Linked List e poi eventualmente affiancarla ad una struttura tipo Heap.
Sto facendo delle prove nella realizzazione di questa "Linked list" semplicemente creando diversi elementi collegando e stampando su console per ogni elemento:
Identificativo Elemento, Identificativo elemento precedente, Identificativo elemento successivo.
Ogni elemento della coda ha all'interno un elemento "job".
Il problema è che nel momento in cui vado a stampare l'elemento precedente o successivo con l'istruzione:
printf("PREC = %d , SUCC = %d \n", p->prev->jobElement.idJob, p->next->jobElement.idJob);
l'esecuzione di questa istruzione e in particolare il fatto di accedere agli elementi "jobElement" mi blocca inaspettatamente il programma (uso eclipse) senza alcun messaggio di errore (almeno un ubuntu).
Ecco i file:
FILE JOB.H
typedef struct job{
int idJob;
int priority;
int releaseTime;
int exeTime;
int endTime; // variable used only by periodic jobs
int numProc;
int processorOwner;
}job;
FILE QUEUEELEMENT.H
#include "job.h"
typedef struct queueElement{
job jobElement;
struct queueElement* next;
struct queueElement* prev;
}queueElement;
FILE MAIN.C
#include "job.h"
#include "queueElement.h"
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <malloc.h>
int main(){
int i;
printf("simulazione di coda");
queueElement* p;
queueElement* temp;
p=(queueElement *)malloc(sizeof(queueElement));
p->jobElement.idJob=0;
for(i =10; i>0; i--){
p->next = (queueElement *)malloc(sizeof(queueElement));
temp = p->next;
temp->jobElement.idJob=i;
printf("inserito elemento %d ",p->jobElement.idJob);
if(i<10){
printf("PREC = %d , SUCC = %d \n", p->prev->jobElement.idJob, p->next->jobElement.idJob);
}
p=temp;
}
}
Chi mi riesce a dare una mano? Grazie mille a tutti!