Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Insert/adds a new ranking to the ranking list
- tError rankingList_insert(tRankingList* list, tRanking ranking, int index) {
- // PR3 EX2
- assert(list != NULL);
- tRankingListNode* new_ranking;
- tRankingListNode* current_ranking;
- new_ranking = (tRankingListNode*) malloc(list->size * sizeof(tRankingListNode));
- current_ranking = (tRankingListNode*) malloc(list->size * sizeof(tRankingListNode));
- if (new_ranking == NULL) {
- return ERR_MEMORY_ERROR;
- }
- if (current_ranking == NULL) {
- return ERR_MEMORY_ERROR;
- }
- if ((index < 1) || (index > list->size)) {
- return ERR_INVALID_INDEX;
- }
- if (index == 1){
- new_ranking->prev = NULL;
- new_ranking->next = NULL;
- new_ranking->e = ranking;
- list->first = new_ranking;
- list->last = new_ranking;
- list->size = list->size +1;
- return OK;
- }else if (index == list->size + 1){
- new_ranking->next = NULL;
- new_ranking->prev = list->last;
- new_ranking->e = ranking;
- list->first = new_ranking;
- list->last = new_ranking;
- list->size = list->size +1;
- return OK;
- } else{
- current_ranking = list->first;
- for (int i=1; i<index; i++) {
- current_ranking = current_ranking->next;
- new_ranking->next = current_ranking;
- new_ranking->prev = current_ranking->prev;
- if (current_ranking->prev == NULL) {
- list->first = new_ranking;
- }
- else {
- current_ranking->next = new_ranking;
- current_ranking = new_ranking;
- list->size = list->size +1;
- return OK;
- }
- }
- return ERR_INVALID_INDEX;
- }
- //return OK;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement