程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Insertion Sort List,insertionsortlist

Insertion Sort List,insertionsortlist

編輯:關於C語言

Insertion Sort List,insertionsortlist


解題思路:
1.這個就是鏈表有序插入的變形
2.要設置4個指針,插入,查詢,插入前,查詢前指針

 

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     struct ListNode *next;
 6  * };
 7  */
 8 struct ListNode* insertionSortList(struct ListNode* head) {
 9     struct ListNode*  insert;
10     struct ListNode*  insert_p;         
11     struct ListNode*  cur;
12     struct ListNode*  cur_p;
13     int flag;
14     if(head == NULL)
15         return NULL;
16     insert_p = head;
17     insert = head->next;
18     while(insert != NULL){
19         cur = head;
20         cur_p = head;
21         flag = 0;
22         while(cur != insert){
23             if(head->val > insert->val){                                  //插入頭結點,要注意交換次序
24                 insert_p->next = insert->next;
25                 insert->next = head;
26                 head = insert;
27                 insert = insert_p->next;
28                 flag = 1;                 
29                 break;
30             }
31             else if(cur->val > insert->val){
32                 insert_p->next = insert->next;
33                 cur_p->next = insert;
34                 insert->next = cur;
35                 insert = insert_p->next;
36                 flag = 1;
37                 break;
38             }
39             cur_p = cur;
40             cur = cur->next;
41         }
42         if(flag == 0){                             //flag用來查看是否插入,插入的話insert已經移到下一個位置,就不用在移動了
43             insert_p = insert;
44             insert = insert->next;
45         }
46     }
47     return head;
48 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved