Advertisement
davidtc14

Untitled

May 26th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. // Insert/adds a new ranking to the ranking list
  2. tError rankingList_insert(tRankingList* list, tRanking ranking, int index) {
  3. // PR3 EX2
  4.  
  5. assert(list != NULL);
  6.  
  7.  
  8. tRankingListNode* new_ranking;
  9. tRankingListNode* current_ranking;
  10.  
  11. new_ranking = (tRankingListNode*) malloc(list->size * sizeof(tRankingListNode));
  12. current_ranking = (tRankingListNode*) malloc(list->size * sizeof(tRankingListNode));
  13.  
  14. if (new_ranking == NULL) {
  15. return ERR_MEMORY_ERROR;
  16. }
  17.  
  18. if (current_ranking == NULL) {
  19. return ERR_MEMORY_ERROR;
  20. }
  21.  
  22. if ((index < 1) || (index > list->size)) {
  23. return ERR_INVALID_INDEX;
  24. }
  25.  
  26. if (index == 1){
  27. new_ranking->prev = NULL;
  28. new_ranking->next = NULL;
  29. new_ranking->e = ranking;
  30. list->first = new_ranking;
  31. list->last = new_ranking;
  32. list->size = list->size +1;
  33. return OK;
  34.  
  35. }else if (index == list->size + 1){
  36.  
  37. new_ranking->next = NULL;
  38. new_ranking->prev = list->last;
  39. new_ranking->e = ranking;
  40. list->first = new_ranking;
  41. list->last = new_ranking;
  42. list->size = list->size +1;
  43. return OK;
  44.  
  45. } else{
  46. current_ranking = list->first;
  47. for (int i=1; i<index; i++) {
  48. current_ranking = current_ranking->next;
  49. new_ranking->next = current_ranking;
  50. new_ranking->prev = current_ranking->prev;
  51.  
  52. if (current_ranking->prev == NULL) {
  53. list->first = new_ranking;
  54. }
  55. else {
  56. current_ranking->next = new_ranking;
  57. current_ranking = new_ranking;
  58. list->size = list->size +1;
  59. return OK;
  60. }
  61.  
  62. }
  63. return ERR_INVALID_INDEX;
  64. }
  65.  
  66. //return OK;
  67.  
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement