Advertisement
Guest User

Untitled

a guest
Aug 31st, 2015
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. void sort(list *root){
  2. list *p, *key;
  3. list *result = root;
  4. root = root->next; /* Головой стал следующий элемент */
  5. result->next = NULL; /* Первый элемент отсортированного списка */
  6.  
  7. while(root->next != NULL){
  8. key = root;
  9. root = root->next;
  10. if(key->data < result->data){ /* Вставляем результат в голову */
  11. key->next = result;
  12. result = key;
  13. }else{
  14. p = result;
  15. while(p->next != NULL){ /* Бежим по уже сформированному результату */
  16. if(p->next->data > key->data)
  17. break;
  18. p = p->next;
  19. }
  20. key->next = p->next;
  21. p->next = key;
  22. }
  23. }
  24. root = result;
  25. }
  26.  
  27. struct list* create(int a){
  28. struct list *root;
  29. root = (struct list*)malloc(sizeof(struct list));
  30. root->data = a;
  31. root->next = NULL;
  32. return root;
  33. }
  34.  
  35. for(int i = 1; i < 10; i++){
  36. //temp = addelem(temp, i);
  37. push(root, i*16 % 9);
  38. }
  39.  
  40. root = create(0);
  41.  
  42. struct list{
  43. int data;
  44. list *next;
  45. };
  46.  
  47. struct list{
  48. int data;
  49. struct list *next;
  50. };
  51.  
  52. void sort(list *root){
  53. list *p, *key;
  54. list *result = root;
  55. root = root->next;
  56. //...
  57.  
  58. --------------- ---------------
  59. root --->| node1 | next| --->| node2| NULL |
  60. --------------- ---------------
  61.  
  62. list *result = root;
  63.  
  64. root = root->next;
  65.  
  66. ---------------
  67. result --->| node1| NULL |
  68. ---------------
  69. ---------------
  70. root --->| node2| NULL |
  71. ---------------
  72.  
  73. while(root->next != NULL){
  74. //...
  75. }
  76.  
  77. //...
  78. root = result;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement