-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdynamic_list.h
More file actions
162 lines (143 loc) · 5.25 KB
/
dynamic_list.h
File metadata and controls
162 lines (143 loc) · 5.25 KB
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/*
* TITLE: PROGRAMMING II LABS
* SUBTITLE: Practical 1
* AUTHOR 1: Ruben Seoane Iglesias LOGIN 1: r.seoane.iglesias
* AUTHOR 2: Anton Lopez Nunez LOGIN 2: anton.lopez.nunez
* GROUP: *2.4*
* DATE: 04 / 03 / 2022
*/
#ifndef DYNAMIC_LIST_H
#define DYNAMIC_LIST_H
#include <stdlib.h>
#include <stdbool.h>
#define LNULL NULL
#include "types.h"
typedef struct tNode* tPosL;
struct tNode{
tItemL data;
tPosL next;
};
typedef tPosL tList; //Se añade para mantener la transparencia de la implementación (Para que funcione con cualquier implementación)
//Cabeceras de Funciones
void createEmptyList (tList *L);
/*
Objetivo: Crea una lista vacia y la inicializa
Salidas: Una lista vacia
Postcondiciones: Lista queda inicializada y no contiene elementos
*/
bool isEmptyList (tList L);
/*
Objetivo: Determina si la lista está vacia
Entradas:
List: Lista a comprobar
Salidas:
Verdadero si la lista esta vacia y falso en caso contrario
Precondiciones: La lista debe estar inicializada
*/
tPosL first(tList L);
/*
Objetivo: Devuelve la posición del primer elemento de la lista
Entradas:
List: Lista a manipular
Salidas:
Position: Posición del primer elemento
Precondiciones: La lista está inicializada y no esta vacia
*/
tPosL last(tList L);
/*
Objetivo: Devuelve la posición del ultimo elemento de la lista
Entradas:
List: Lista a manipular
Salidas:
Position: Posición del ultimo elemento
Precondiciones: La lista está inicializada y no esta vacia
*/
tPosL next(tPosL p, tList L);
/*
Objetivo: Devuelve la posición en la lista del elemento siguiente al de la posicion indicada (O LNULL si la posicion n
tiene siguiente)
Entradas:
Position: Posicion del elemento actual
List: Lista a manipular
Salidas:
Position: Posición del elemento siguiente o nulo si es el ultimo
Precondiciones: La lista está inicializada y postion es una posicion valida de la lista
*/
tPosL previous(tPosL p, tList L);
/*
Objetivo: Devuelve la posicion en la lista del elemento anterior al de la posicion indicada (o LNULL si no tiene anterior)
Entradas:
Position: Posicion del elemento actual
List: Lista a manipular
Salidas:
Position: Posición del elemento anterior o nulo si es el primero
Precondiciones: La lista está inicializada y position es una posicion valida de la lista
*/
bool insertItem (tItemL d, tPosL p , tList *L);
/*
Objetivo: Inserta un elemento en la lista antes de la posicion indicada.
Si la posicion es nula, añade un elemento al final de la lista.
En caso contrario, el elemento quedará insertado justo antes del que actualmente ocupa la posicion indicada.
Entradas:
Item: Contenido del elemento a insetar
Position: Posicion de referencia para la insercion.
List: Lista donde vamos a insertar
Salidas:
List: Lista con el elemento Item insertado y verdadero si se ha podido insertar, falso en caso contrario.
Precondiciones: La lista está inicializada y Position es una posicion valida de la lista o es una posicion nula
Postcondicion: Las posiciones de los elementos de la lista posteriores a la del elemento insertado pueden haber variado.
*/
void deleteAtPosition (tPosL p, tList *L);
/*
Objetivo: Elimina de la lista un elemento con cierta posicion
Entradas:
Position: Posicion del elemento a eliminar
List: Lista a modificar
Salidas:
List: Lista sin el elemento correspondiente a Position
Precondiciones: La lista está inicializada y position es una posicion valida de la lista
Postcondiciones: Las posiciones de los elementos de la lista posteriores a la de la posicion eliminada pueden haber
variado.
*/
tItemL getItem (tPosL p, tList L);
/*
Objetivo: Recupera el contenido de un elemento de la lista
Entradas:
Position: Posicion del elemento buscado
List: Lista donde realizar la busqueda
Salidas:
Item: Contenido del elemento que esta en Position
Precondiciones: La lista está inicializada y position es una posicion valida de la lista
*/
void updateItem (tItemL d, tPosL p, tList *L);
/*
Objetivo: Modifica el contenido de un elemento de la lista.
Entradas:
Item: Nuevo contenido a asignar al elemento en position
Position: Posicion del elemento que queremos modificar
List: Lista a modificar
Salidas:
List: Lista con el contenido del elemento modificado
Precondiciones: La lista está inicializada y position es una posicion valida de la lista
*/
tPosL findItem (tProductId d, tList L);
/*
Objetivo: Busca el primer elemento con cierto contenido en la lista
Entradas:
Item: Contenido del elemento buscado
List: Lista donde realizar la búsqueda
Salidas:
Position: Posición del elemento encontrado o nulo si no se encuentra
Precondiciones: La lista está inicializada
*/
bool createNode (tPosL *p);
/*
Objetivo: Devuelve la posicion en la lista del elemento anterior al de la posicion indicada (o LNULL si no tiene anterior)
Entradas:
Position: Posicion del elemento actual
List: Lista a manipular
Salidas:
Position: Posición del elemento anterior o nulo si es el primero
Precondiciones: La lista está inicializada y position es una posicion valida de la lista
*/
#endif