-
Notifications
You must be signed in to change notification settings - Fork 0
/
proclist.c
73 lines (58 loc) · 1.59 KB
/
proclist.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include "proclist.h"
void createEmptyProcList(tListProc *Proc) {
Proc->lastPos = -1;
}
bool isEmptyProcList(tListProc Proc) {
return Proc.lastPos == -1;
}
int firstProcList(tListProc Proc) {
return 0;
}
int lastProcList(tListProc Proc) {
return Proc.lastPos;
}
dataProc getItemProcList(int p, tListProc Proc) {
if (p < 0 || p > Proc.lastPos) {
fprintf(stderr, "Error: Índice fuera de rango en getItemProcList.\n");
exit(EXIT_FAILURE); // Manejo de error
}
return Proc.itemP[p];
}
void deleteItemProcList(int p, tListProc *Proc) {
// Liberar memoria asociada a las propiedades dinámicas
if (Proc->itemP[p].user != NULL) {
free(Proc->itemP[p].user);
}
if (Proc->itemP[p].cmd != NULL) {
free(Proc->itemP[p].cmd);
}
if (Proc->itemP[p].date != NULL) {
free(Proc->itemP[p].date);
}
// Reorganizar la lista
for (int i = p; i < lastProcList(*Proc); i++) {
Proc->itemP[i] = Proc->itemP[i + 1];
}
Proc->lastPos--;
}
void deleteProcList(tListProc *Proc) {
while (!isEmptyProcList(*Proc)) {
deleteItemProcList(firstProcList(*Proc), Proc);
}
}
void updateItemProcList(dataProc item, int p, tListProc *Proc) {
int i;
for(i = 0; i <= lastProcList(*Proc); i++) {
if(i == p)
Proc->itemP[i] = item;
}
}
bool insertItemProcList(dataProc item, tListProc *Proc) {
if (Proc->lastPos < MAXDATA - 1) { // Asegurar espacio disponible
Proc->lastPos++;
Proc->itemP[Proc->lastPos] = item;
return true;
} else {
return false;
}
}