Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- struct Node
- {
- int val;
- Node *next;
- };
- // use if you want implement selection sort
- Node* remove_maximum(Node *head) { /// zmienione na bez referencji
- Node *tmp = head;
- while(head != NULL && head -> next != NULL){
- if(head -> next -> val > tmp -> next -> val){
- tmp = head;
- }
- head = head -> next;
- }
- Node *result = tmp -> next;
- tmp -> next = result -> next;
- return result;
- }
- // use if you want implement insertion sort
- void insert(Node *&head, Node *item) {
- if (head == NULL || head->val > item->val) {
- item->next = head;
- head = item;
- return;
- }
- /*****************************************************
- * What if item should be placed further on the list? *
- *****************************************************/
- }
- Node* sort(Node *head) {
- Node *result = NULL;
- Node *guard = new Node;
- guard -> next = head;
- while(guard != NULL && guard -> next != NULL){
- Node *helping = remove_maximum(guard);
- helping -> next = result;
- result = helping; /// przepinanie na poczatek
- }
- delete guard;
- return result;
- }
- int main() {
- int Z;
- scanf("%d", &Z);
- int val;
- while (Z--) {
- Node *head = NULL;
- Node *curr = NULL;
- int n, val;
- scanf("%d", &n);
- while (n--) {
- scanf("%d", &val);
- Node *temp = new Node;
- temp->val = val;
- temp->next = NULL;
- if (head == NULL) {
- head = temp;
- curr = temp;
- } else {
- curr->next = temp;
- curr = temp;
- }
- }
- Node *pr = head;
- head = sort(head);
- while (head != NULL) {
- printf("%d\n", head->val);
- curr = head;
- head = head->next;
- delete curr;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement