Advertisement
Jakubowiczish

Untitled

Mar 16th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. struct Node
  4. {
  5. int val;
  6. Node *next;
  7. };
  8.  
  9. // use if you want implement selection sort
  10. Node* remove_maximum(Node *head) { /// zmienione na bez referencji
  11. Node *tmp = head;
  12. while(head != NULL && head -> next != NULL){
  13. if(head -> next -> val > tmp -> next -> val){
  14. tmp = head;
  15. }
  16. head = head -> next;
  17. }
  18. Node *result = tmp -> next;
  19. tmp -> next = result -> next;
  20. return result;
  21. }
  22.  
  23. // use if you want implement insertion sort
  24. void insert(Node *&head, Node *item) {
  25. if (head == NULL || head->val > item->val) {
  26. item->next = head;
  27. head = item;
  28. return;
  29. }
  30.  
  31. /*****************************************************
  32. * What if item should be placed further on the list? *
  33. *****************************************************/
  34. }
  35.  
  36. Node* sort(Node *head) {
  37. Node *result = NULL;
  38. Node *guard = new Node;
  39. guard -> next = head;
  40.  
  41. while(guard != NULL && guard -> next != NULL){
  42. Node *helping = remove_maximum(guard);
  43. helping -> next = result;
  44. result = helping; /// przepinanie na poczatek
  45. }
  46.  
  47. delete guard;
  48. return result;
  49. }
  50.  
  51. int main() {
  52. int Z;
  53. scanf("%d", &Z);
  54.  
  55. int val;
  56.  
  57. while (Z--) {
  58.  
  59. Node *head = NULL;
  60. Node *curr = NULL;
  61.  
  62. int n, val;
  63. scanf("%d", &n);
  64.  
  65. while (n--) {
  66. scanf("%d", &val);
  67. Node *temp = new Node;
  68. temp->val = val;
  69. temp->next = NULL;
  70. if (head == NULL) {
  71. head = temp;
  72. curr = temp;
  73. } else {
  74. curr->next = temp;
  75. curr = temp;
  76. }
  77. }
  78.  
  79. Node *pr = head;
  80. head = sort(head);
  81.  
  82. while (head != NULL) {
  83. printf("%d\n", head->val);
  84. curr = head;
  85. head = head->next;
  86. delete curr;
  87. }
  88.  
  89. }
  90.  
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement