Загрузка...

Си | Помощь с сортировкой односвязного списка

Тема в разделе C/C++ создана пользователем FroZZZ 8 мар 2021. 170 просмотров

  1. FroZZZ
    FroZZZ Автор темы 8 мар 2021 Качественная отработка ***** - https://lolz.live/threads/8135594 12 268 18 июл 2017
    Есть односвязный список, ключи -целые числа. Нужно сделать сортировку списка, чтобы сначала были положительные, потом нулевые, и потом отрицательные элементы.
    За помощь скину копейку, можете в тг написать, скину код который есть сейчас
     
  2. Maksum1
    Maksum1 8 мар 2021 Услуги кодера С/С++ 21 17 янв 2018
    // C program to implement Bubble Sort on singly linked list
    #include<stdio.h>
    #include<stdlib.h>

    /* structure for a node */
    struct Node
    {
    int data;
    struct Node *next;
    };

    /* Function to insert a node at the beginning of a linked list */
    void insertAtTheBegin(struct Node **start_ref, int data);

    /* Function to bubble sort the given linked list */
    void bubbleSort(struct Node *start);

    /* Function to swap data of two nodes a and b*/
    void swap(struct Node *a, struct Node *b);

    /* Function to print nodes in a given linked list */
    void printList(struct Node *start);

    int main()
    {
    int arr[] = {12, 56, 0, -1, -2, 2, 11, 0, -2, 1, 90};
    int list_size;
    int i;

    /* start with empty linked list */
    struct Node *start = NULL;

    /* Create linked list from the array arr[].
    Created linked list will be 1->11->2->56->12 */
    for (i = 0; i< 6; i++)
    insertAtTheBegin(&start, arr);

    /* print list before sorting */
    printf("\n Linked list before sorting ");
    printList(start);

    /* sort the linked list */
    bubbleSort(start);

    /* print list after sorting */
    printf("\n Linked list after sorting ");
    printList(start);

    getchar();
    return 0;
    }


    /* Function to insert a node at the beginning of a linked list */
    void insertAtTheBegin(struct Node **start_ref, int data)
    {
    struct Node *ptr1 = (struct Node*)malloc(sizeof(struct Node));
    ptr1->data = data;
    ptr1->next = *start_ref;
    *start_ref = ptr1;
    }

    /* Function to print nodes in a given linked list */
    void printList(struct Node *start)
    {
    struct Node *temp = start;
    printf("\n");
    while (temp!=NULL)
    {
    printf("%d ", temp->data);
    temp = temp->next;
    }
    }

    /* Bubble sort the given linked list */
    void bubbleSort(struct Node *start)
    {
    int swapped, i;
    struct Node *ptr1;
    struct Node *lptr = NULL;

    /* Checking for empty list */
    if (start == NULL)
    return;

    do
    {
    swapped = 0;
    ptr1 = start;

    while (ptr1->next != lptr)
    {
    if (ptr1->data < ptr1->next->data)
    {
    swap(ptr1, ptr1->next);
    swapped = 1;
    }
    ptr1 = ptr1->next;
    }
    lptr = ptr1;
    }
    while (swapped);
    }

    /* function to swap data of two nodes a and b*/
    void swap(struct Node *a, struct Node *b)
    {
    int temp = a->data;
    a->data = b->data;
    b->data = temp;
    }

    [/USERS]
     
  3. KASPAY
    KASPAY 15 мар 2021 657 11 авг 2019
    Хайд поломанный
     
Загрузка...
Top