mirror of
https://gitlab.com/klmp200/LO27.git
synced 2024-11-23 02:13:19 +00:00
Tester c'est douter
This commit is contained in:
parent
e310ecd342
commit
f09d8fed95
@ -35,6 +35,7 @@ int unshift(List *list, cellElement *data){
|
|||||||
ListElement *newElement = malloc(sizeof(*newElement));
|
ListElement *newElement = malloc(sizeof(*newElement));
|
||||||
if (list != NULL && newElement != NULL){
|
if (list != NULL && newElement != NULL){
|
||||||
newElement->data = data;
|
newElement->data = data;
|
||||||
|
newElement->pos = -1;
|
||||||
|
|
||||||
/* Insert the element at the begining of the list */
|
/* Insert the element at the begining of the list */
|
||||||
|
|
||||||
@ -65,6 +66,7 @@ int push(List *list, cellElement *data){
|
|||||||
ListElement *newElement = malloc(sizeof(*newElement));
|
ListElement *newElement = malloc(sizeof(*newElement));
|
||||||
if(list != NULL && newElement != NULL){
|
if(list != NULL && newElement != NULL){
|
||||||
newElement->data = data;
|
newElement->data = data;
|
||||||
|
newElement->pos = -1;
|
||||||
newElement->next = NULL;
|
newElement->next = NULL;
|
||||||
if (list->tail == NULL){
|
if (list->tail == NULL){
|
||||||
list->tail = newElement;
|
list->tail = newElement;
|
||||||
@ -204,3 +206,141 @@ int FreeList(List *list){
|
|||||||
}
|
}
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ListElement * GetElementPos(List *list, int pos){
|
||||||
|
ListElement * el = list->head;
|
||||||
|
while (el != NULL && el->pos != pos){
|
||||||
|
el = el->next;
|
||||||
|
}
|
||||||
|
return el;
|
||||||
|
}
|
||||||
|
|
||||||
|
int RemoveElementPos(List *list, int pos){
|
||||||
|
int ok = SUCCESS;
|
||||||
|
ListElement *toDelete = GetElementPos(list, pos);
|
||||||
|
|
||||||
|
if (toDelete != NULL){
|
||||||
|
ok = PopPtnList(list, toDelete);
|
||||||
|
} else {
|
||||||
|
ok = FAILURE;
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
int InsertBeforeElement(List *list, ListElement *eli, ListElement *elp){
|
||||||
|
int ok = SUCCESS;
|
||||||
|
|
||||||
|
if (list != NULL){
|
||||||
|
if (elp->previous == NULL){
|
||||||
|
eli->next = elp;
|
||||||
|
eli->previous = NULL;
|
||||||
|
elp->previous = eli;
|
||||||
|
} else {
|
||||||
|
eli->next = elp;
|
||||||
|
eli->previous = elp->previous;
|
||||||
|
elp->previous->next = eli;
|
||||||
|
elp->previous = eli;
|
||||||
|
}
|
||||||
|
list->size = list->size + 1;
|
||||||
|
} else {
|
||||||
|
ok = FAILURE;
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
int InsertAfterElement(List *list, ListElement *eli, ListElement *elb){
|
||||||
|
int ok = SUCCESS;
|
||||||
|
|
||||||
|
if (list != NULL){
|
||||||
|
if (elb->next == NULL){
|
||||||
|
eli->next = NULL;
|
||||||
|
eli->previous = elb;
|
||||||
|
elb->next = eli;
|
||||||
|
} else {
|
||||||
|
eli->previous = elb;
|
||||||
|
eli->next=elb->next;
|
||||||
|
elb->next->previous = eli;
|
||||||
|
elb->next = eli;
|
||||||
|
}
|
||||||
|
list->size = list->size + 1;
|
||||||
|
} else {
|
||||||
|
ok = FAILURE;
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
int InsertBefore(List *list, cellElement *data, int nb){
|
||||||
|
int ok = SUCCESS;
|
||||||
|
ListElement *newElement = NULL;
|
||||||
|
ListElement *eli = GetElement(list, nb);
|
||||||
|
if (eli != NULL){
|
||||||
|
newElement = malloc(sizeof(*newElement));
|
||||||
|
if (newElement != NULL){
|
||||||
|
newElement->pos = -1;
|
||||||
|
newElement->data = data;
|
||||||
|
ok = InsertBeforeElement(list, newElement, eli);
|
||||||
|
} else {
|
||||||
|
ok = FAILURE;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ok = FAILURE;
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
int InsertAfter(List *list, cellElement *data, int nb){
|
||||||
|
int ok = SUCCESS;
|
||||||
|
ListElement *newElement = NULL;
|
||||||
|
ListElement *elb = GetElement(list, nb);
|
||||||
|
if (elb != NULL){
|
||||||
|
newElement = malloc(sizeof(*newElement));
|
||||||
|
if (newElement != NULL){
|
||||||
|
newElement->pos = -1;
|
||||||
|
newElement->data = data;
|
||||||
|
ok = InsertAfterElement(list, newElement, elb);
|
||||||
|
} else {
|
||||||
|
ok = FAILURE;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ok = FAILURE;
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
int InsertBeforePos(List *list, cellElement *data, int pos){
|
||||||
|
int ok = SUCCESS;
|
||||||
|
ListElement *newElement = NULL;
|
||||||
|
ListElement *eli = GetElementPos(list, pos);
|
||||||
|
if (eli != NULL){
|
||||||
|
newElement = malloc(sizeof(*newElement));
|
||||||
|
if (newElement != NULL){
|
||||||
|
newElement->pos = -1;
|
||||||
|
newElement->data = data;
|
||||||
|
ok = InsertBeforeElement(list, newElement, eli);
|
||||||
|
} else {
|
||||||
|
ok = FAILURE;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ok = FAILURE;
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
int InsertAfterPos(List *list, cellElement *data, int pos){
|
||||||
|
int ok = SUCCESS;
|
||||||
|
ListElement *newElement = NULL;
|
||||||
|
ListElement *elb = GetElementPos(list, pos);
|
||||||
|
if (elb != NULL){
|
||||||
|
newElement = malloc(sizeof(*newElement));
|
||||||
|
if (newElement != NULL){
|
||||||
|
newElement->pos = -1;
|
||||||
|
newElement->data = data;
|
||||||
|
ok = InsertAfterElement(list, newElement, elb);
|
||||||
|
} else {
|
||||||
|
ok = FAILURE;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ok = FAILURE;
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
@ -11,6 +11,7 @@ struct ListElement {
|
|||||||
cellElement *data;
|
cellElement *data;
|
||||||
ListElement *next;
|
ListElement *next;
|
||||||
ListElement *previous;
|
ListElement *previous;
|
||||||
|
int pos;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct List {
|
typedef struct List {
|
||||||
@ -19,13 +20,13 @@ typedef struct List {
|
|||||||
int size;
|
int size;
|
||||||
} List;
|
} List;
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Create a new list
|
* Create a new list
|
||||||
* @return a pointer of list
|
* @return a pointer of list
|
||||||
*/
|
*/
|
||||||
List * CreateList();
|
List * CreateList();
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Insert an element at the begining of a list
|
* Insert an element at the begining of a list
|
||||||
* @param list pointer of a list
|
* @param list pointer of a list
|
||||||
* @param data any type of data
|
* @param data any type of data
|
||||||
@ -34,7 +35,7 @@ List * CreateList();
|
|||||||
*/
|
*/
|
||||||
int unshift(List* list, cellElement* data);
|
int unshift(List* list, cellElement* data);
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Insert an element at the end of a list
|
* Insert an element at the end of a list
|
||||||
* @param list pointer of a list
|
* @param list pointer of a list
|
||||||
* @param data any type of data
|
* @param data any type of data
|
||||||
@ -43,7 +44,7 @@ int unshift(List* list, cellElement* data);
|
|||||||
*/
|
*/
|
||||||
int push(List* list, cellElement* data);
|
int push(List* list, cellElement* data);
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Get an element in a given list
|
* Get an element in a given list
|
||||||
* @param list as a pointer
|
* @param list as a pointer
|
||||||
* @param nb the number of the element (can be negative)
|
* @param nb the number of the element (can be negative)
|
||||||
@ -51,7 +52,7 @@ int push(List* list, cellElement* data);
|
|||||||
*/
|
*/
|
||||||
ListElement * GetElement(List *list, int nb);
|
ListElement * GetElement(List *list, int nb);
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Delete an element with a pointer of element in the list
|
* Delete an element with a pointer of element in the list
|
||||||
* @param list as a pointer
|
* @param list as a pointer
|
||||||
* @param element of the list as a pointer
|
* @param element of the list as a pointer
|
||||||
@ -59,7 +60,7 @@ ListElement * GetElement(List *list, int nb);
|
|||||||
*/
|
*/
|
||||||
int PopPtnList(List *list, ListElement *element);
|
int PopPtnList(List *list, ListElement *element);
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Delete an element with a position in the list
|
* Delete an element with a position in the list
|
||||||
* @param list as a pointer
|
* @param list as a pointer
|
||||||
* @param position of the element
|
* @param position of the element
|
||||||
@ -67,33 +68,102 @@ int PopPtnList(List *list, ListElement *element);
|
|||||||
*/
|
*/
|
||||||
int RemoveElement(List *list, int nb);
|
int RemoveElement(List *list, int nb);
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Delete the first element of the list
|
* Delete the first element of the list
|
||||||
* @param list as a pointer
|
* @param list as a pointer
|
||||||
* @return status of the operation
|
* @return status of the operation
|
||||||
*/
|
*/
|
||||||
int shift(List *list);
|
int shift(List *list);
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Delete the last element of the list
|
* Delete the last element of the list
|
||||||
* @param list as a pointer
|
* @param list as a pointer
|
||||||
* @return status of the operation
|
* @return status of the operation
|
||||||
*/
|
*/
|
||||||
int pop(List *list);
|
int pop(List *list);
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Delete every elements in a list
|
* Delete every elements in a list
|
||||||
* @param list as a pointer
|
* @param list as a pointer
|
||||||
* @return status of the operation
|
* @return status of the operation
|
||||||
*/
|
*/
|
||||||
int DeleteListContent(List *list);
|
int DeleteListContent(List *list);
|
||||||
|
|
||||||
|
/**
|
||||||
/*
|
|
||||||
* Free a list
|
* Free a list
|
||||||
* @param list as a pointer
|
* @param list as a pointer
|
||||||
* @return status of the operation
|
* @return status of the operation
|
||||||
*/
|
*/
|
||||||
int FreeList(List *list);
|
int FreeList(List *list);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find the first element with the given pos value
|
||||||
|
* @param list as a pointer
|
||||||
|
* @param pos the pos value to find
|
||||||
|
* @return ListElement the found element can return NULL
|
||||||
|
*/
|
||||||
|
ListElement * GetElementPos(List *List, int pos);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete the first element of a list with the given pos
|
||||||
|
* @param list as a pointer
|
||||||
|
* @param pos pos value of the element
|
||||||
|
* @return status of the operation
|
||||||
|
*/
|
||||||
|
int RemoveElementPos(List *list, int pos);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert an element in a list before the given element
|
||||||
|
* @param list as a pointer
|
||||||
|
* @param eli an element to insert
|
||||||
|
* @param elp the previous element in the list
|
||||||
|
* @return status of the operation
|
||||||
|
*/
|
||||||
|
int InsertBeforeElement(List *list, ListElement *eli, ListElement *elp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert an element in a list after the given element
|
||||||
|
* @param list as a pointer
|
||||||
|
* @param eli an element to insert
|
||||||
|
* @param elb the before element in the list
|
||||||
|
* @return status of the operation
|
||||||
|
*/
|
||||||
|
int InsertAfterElement(List *list, ListElement *eli, ListElement *elb);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert an element in a list before the given position
|
||||||
|
* @param list as a pointer
|
||||||
|
* @param data cellElement to insert
|
||||||
|
* @param nb the position in list to find
|
||||||
|
* @return status of the operation
|
||||||
|
*/
|
||||||
|
int InsertBefore(List *list, cellElement *data, int nb);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert an element in a list after the given position
|
||||||
|
* @param list as a pointer
|
||||||
|
* @param data cellElement to insert
|
||||||
|
* @param nb the position in list to find
|
||||||
|
* @return status of the operation
|
||||||
|
*/
|
||||||
|
int InsertAfter(List *list, cellElement *data, int nb);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert an element in a list before the first element with the given pos
|
||||||
|
* @param list as a pointer
|
||||||
|
* @param data cellElement to insert
|
||||||
|
* @param pos the first pos in list to find
|
||||||
|
* @return status of the operation
|
||||||
|
*/
|
||||||
|
int InsertBeforePos(List *list, cellElement *data, int pos);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert an element in a list after the first element with the given pos
|
||||||
|
* @param list as a pointer
|
||||||
|
* @param data cellElement to insert
|
||||||
|
* @param pos the first pos in list to find
|
||||||
|
* @return status of the operation
|
||||||
|
*/
|
||||||
|
int InsertAfterPos(List *list, cellElement *data, int pos);
|
||||||
|
|
||||||
#endif /* LIST_H */
|
#endif /* LIST_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user