单链表的冒泡排序

xiaoxiao2021-02-28  119

#include <stdio.h>   #include <malloc.h>      typedef int DataType;   typedef struct node   {       DataType data;       struct node *next;   }LinkedNode, *LinkList;   LinkList create_list()   {       DataType value[] = {1, 8, 3, 2, 5, 6, 9,4, 10, 7};       int len = sizeof(value) / sizeof(DataType);       int i = 0;       LinkedNode *list_head = NULL;       LinkedNode *temp = NULL;       LinkedNode *p = NULL;          list_head = (LinkedNode*)malloc(sizeof(LinkedNode));       list_head->data = value[0];       list_head->next = NULL;          temp = list_head;       for(i = 1; i < len; i++)       {           while (temp->next != NULL)             {                 temp = temp->next;             }             p = (LinkedNode*)malloc(sizeof(LinkedNode));           p->data = value[i];           p->next = NULL;           temp->next = p;       }       return list_head;   }  void print(LinkList list)   {       LinkedNode *temp = NULL;       if(list == NULL)           return;              temp = list;       while(temp != NULL)       {           printf("%d  ", temp->data);           temp = temp->next;       }       printf("\n");       return;   }    void swap(int *x,int *y) {             int temp;               temp=*x;     *x=*y; *y=temp; } LinkList bubbleSortList(LinkList head)  { if(head == NULL || head->next == NULL)    return head;      LinkedNode *p = NULL;      char isChange = 1;      while(p != head->next && isChange)         {             LinkedNode *q = head;             isChange = 0;//标志当前这一轮中又没有发生元素交换,如果没有则表示数组已经有序             for(; q->next && q->next != p; q = q->next)             {                 if(q->data > q->next->data)                 {                     swap(&q->data, &q->next->data);                     isChange = 1;                 }             }             p = q;         }         return head; }   int main()   {       LinkList list = NULL;       list = create_list();       print(list);       bubbleSortList(list);     printf("after sort:\n");     print(list);      return 0;  

转载请注明原文地址: https://www.6miu.com/read-24246.html

最新回复(0)