青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

鏈表排序之冒泡、插入、選擇

Posted on 2010-08-20 14:24 David Fang 閱讀(457) 評論(0)  編輯 收藏 引用 所屬分類: 算法點滴
  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 
  4 typedef struct LinkNode{
  5     int val;
  6     struct LinkNode* next;
  7 }LinkNode;
  8 
  9 LinkNode* CreateList(int A[], int count)
 10 {
 11     LinkNode* head = (LinkNode*)malloc(sizeof(LinkNode));
 12     head->val = A[0];
 13     head->next = NULL;
 14 
 15     LinkNode* p = head;
 16     
 17     for (int i = 1; i < count; ++i)
 18     {
 19         p->next = (LinkNode*)malloc(sizeof(LinkNode));
 20         p->next->val = A[i];
 21         p->next->next = NULL;
 22         p = p->next;
 23     }
 24 
 25     return head;
 26 }
 27 
 28 //asscending sort link list 
 29 //
 30 LinkNode* SortLinkListBubble(LinkNode* head)
 31 {
 32     if (NULL == head)
 33     {
 34         return head;
 35     }
 36 
 37     //points to the last, also the bigest value node
 38     LinkNode* lastN = NULL;
 39 
 40     while(true)
 41     {
 42         LinkNode* n = head->next;
 43 
 44         if (n == lastN)
 45         {
 46             break;
 47         }
 48 
 49         if (n->val < head->val)
 50         {
 51             head->next = n->next;
 52             n->next = head;
 53             head = n;
 54         }
 55 
 56         LinkNode* pre = head;
 57         LinkNode* cur = head->next;
 58         LinkNode* tmp;
 59         n = cur->next;
 60 
 61         while(lastN != n)
 62         {
 63             if (n->val < cur->val)
 64             {
 65                 tmp = n->next;
 66                 cur->next = n->next;
 67                 n->next = cur;
 68                 pre->next = n;
 69                 n = tmp;
 70             }
 71             else
 72             {
 73                 n = n->next;
 74             }
 75             pre = pre->next;
 76             cur = cur->next;
 77         }
 78 
 79         lastN = cur;
 80     }
 81 
 82     return head;
 83 }
 84 
 85 LinkNode* SortLinkListInsertion(LinkNode* head)
 86 {
 87     if (NULL == head || NULL == head->next)
 88     {
 89         return head;
 90     }
 91 
 92     LinkNode* r = head->next;
 93     LinkNode* tmp;
 94     head->next = NULL;
 95 
 96     while(NULL != r)
 97     {
 98         if (r->val < head->val)
 99         {
100             tmp = r->next;
101             r->next = head;
102             head = r;
103             r = tmp;
104         }
105         else
106         {
107             LinkNode* p = head;
108             while(NULL != p->next)
109             {
110                 if (r->val >= p->val && r->val <= p->next->val)
111                 {
112                     tmp = r->next;
113                     r->next = p->next;
114                     p->next = r;
115                     r = tmp;
116                     break;
117                 }
118                 else
119                 {
120                     p = p->next;
121                 }
122             }
123 
124             if (NULL == p->next)
125             {
126                 tmp = r->next;
127                 r->next = NULL;
128                 p->next = r;
129                 r = tmp;
130             }
131         }
132     }
133 
134     return head;
135 }
136 
137 LinkNode* SortLinkListSelection(LinkNode* head)
138 {
139     if (NULL == head || NULL == head->next)
140     {
141         return head;
142     }
143 
144     LinkNode* p = NULL;
145     LinkNode* pre = NULL;
146     LinkNode* pmin = NULL;
147     LinkNode* pminpre = NULL;
148     LinkNode* L = NULL;
149     LinkNode* Ltail = NULL;
150 
151     while (NULL != head && NULL != head->next)
152     {
153         pminpre = pmin = head;
154         
155         if (head->val > head->next->val)
156         {
157             pmin = head->next;
158         }
159 
160         pre = head;
161         p = head->next;
162 
163         while(NULL != p)
164         {
165             if (pmin->val > p->val)
166             {
167                 pminpre = pre;
168                 pmin = p;
169             }
170             pre = pre->next;
171             p = p->next;
172         }
173 
174         //delete pmin from original list
175         if (pmin == head)
176         {
177             head = head->next;
178         }
179         else
180         {
181             pminpre->next = pmin->next;
182         }
183 
184         //add it to the new list
185         if (NULL == L)
186         {
187             L = Ltail = pmin;
188             pmin->next = NULL;
189         }
190         else{
191             Ltail->next = pmin;
192             Ltail = pmin;
193             pmin->next = NULL;
194         }
195     }
196 
197     //do not forget the last node
198 
199     Ltail->next = head;
200     return L;
201 }
202 
203 void ShowList(LinkNode* L)
204 {
205     LinkNode* p = L;
206     printf("%d", p->val);
207 
208     while(p->next)
209     {
210         p = p->next;
211         printf("-->%d", p->val);
212     }
213 
214     printf("\n");
215 }
216 
217 int main(int argc, char *argv[])
218 {
219     //int A[] = {3, 6, 9, 8, 5, 2, 1, 4, 7, 0};
220     int A[] = {3698321276};
221     
222     LinkNode* L = CreateList(A, 10);
223 
224     ShowList(L);
225 
226     //L = SortLinkListInsertion(L);
227 
228     //L = SortLinkListBubble(L);
229 
230     L = SortLinkListSelection(L);
231 
232     ShowList(L);
233 
234     return 0;
235 }
    寫得有點混亂,有點像C又有點像C++,權當參考吧

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


posts - 9, comments - 13, trackbacks - 0, articles - 0

Copyright © David Fang

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久野战av| 欧美先锋影音| 亚欧美中日韩视频| 欧美精品免费在线| 国产亚洲视频在线| 亚洲欧美精品伊人久久| 亚洲高清不卡在线| 亚洲国产欧美日韩精品| 一区二区三区不卡视频在线观看| 国产揄拍国内精品对白| 亚洲综合日韩在线| 亚洲日本成人| 欧美激情第三页| 亚洲黄色一区| 女同性一区二区三区人了人一 | 久久天堂成人| 亚洲欧美在线另类| 国产精品腿扒开做爽爽爽挤奶网站| 9国产精品视频| 亚洲精品综合| 欧美午夜www高清视频| 亚洲一区二区高清| 亚洲视频在线观看网站| 国产农村妇女精品一二区| 西西裸体人体做爰大胆久久久| 一区二区三区四区五区视频| 欧美日韩调教| 欧美在线欧美在线| 久久久国产亚洲精品| 亚洲国产精品传媒在线观看| 欧美韩日精品| 欧美日韩成人一区| 欧美一级艳片视频免费观看| 午夜久久影院| 亚洲国产高清视频| 亚洲精品少妇30p| 国产精品丝袜白浆摸在线| 久久国产精品久久久久久| 午夜在线电影亚洲一区| 亚洲国产精品成人va在线观看| 亚洲高清视频中文字幕| 欧美日本国产视频| 欧美伊人影院| 欧美成人精品在线播放| 亚洲欧美日本国产有色| 久久狠狠亚洲综合| 夜夜嗨一区二区三区| 午夜精品区一区二区三| 最新国产成人在线观看| 中文在线资源观看网站视频免费不卡 | 欧美电影免费网站| 欧美日韩国产黄| 久久久久久网址| 欧美精品久久99| 久久亚洲精选| 欧美日韩精品一本二本三本| 久久av一区| 欧美大尺度在线观看| 国产一区二区三区黄| 一区二区视频免费在线观看 | 欧美国产视频在线观看| 欧美视频免费在线| 裸体歌舞表演一区二区| 欧美日韩综合精品| 欧美成人一区二区三区片免费| 欧美日韩另类视频| 蜜臀a∨国产成人精品 | 在线亚洲一区观看| 久久国产婷婷国产香蕉| 亚洲综合第一页| 美女脱光内衣内裤视频久久影院| 性欧美长视频| 欧美日韩午夜精品| 亚洲国产高潮在线观看| 国产一区二区三区四区在线观看 | 久久av二区| 欧美黄色小视频| 久久久久国产精品厨房| 国产精品久久国产愉拍| 亚洲大胆人体视频| 国内精品久久国产| 亚洲永久免费精品| 亚洲一区二区精品视频| 男男成人高潮片免费网站| 久久美女性网| 国产精品一区二区三区四区五区| 亚洲高清激情| 亚洲日本va午夜在线电影| 久久资源av| 欧美激情二区三区| 亚洲啪啪91| 欧美 亚欧 日韩视频在线| 蜜臀av国产精品久久久久| 一区二区视频免费在线观看| 久久精品电影| 你懂的视频欧美| 亚洲国产成人久久综合| 免费日韩精品中文字幕视频在线| 久久综合影音| 今天的高清视频免费播放成人 | 亚洲国产美女久久久久 | 亚洲国产岛国毛片在线| 狂野欧美一区| 欧美国产精品劲爆| 日韩视频在线你懂得| 欧美88av| 99视频精品免费观看| 亚洲午夜在线| 国产精品看片你懂得| 亚洲欧美精品在线| 久久久久久色| 亚洲国产日韩在线| 欧美精品久久久久a| 亚洲三级影片| 欧美在线不卡| 久久蜜臀精品av| 亚洲福利视频二区| 欧美大片网址| 亚洲天堂网站在线观看视频| 欧美伊久线香蕉线新在线| 国产主播一区二区三区| 久久国产免费看| 亚洲激情自拍| 午夜精品影院| 在线观看日韩www视频免费| 欧美黄免费看| 亚洲欧美制服另类日韩| 欧美国产1区2区| 亚洲视频第一页| 国产综合色产在线精品| 欧美高清视频一区二区三区在线观看| 亚洲免费高清视频| 久久久免费精品| 一区二区久久| 国内视频精品| 欧美日韩精品免费看| 欧美伊久线香蕉线新在线| 亚洲国产精品一区二区第四页av| 亚洲欧美卡通另类91av| 亚洲国产日韩在线一区模特| 国产精品美女在线| 欧美国产精品劲爆| 久久久久国产精品www| 中文亚洲欧美| 亚洲国产成人午夜在线一区| 久久国产欧美| 亚洲免费视频一区二区| 亚洲精品一区二区三区蜜桃久| 国产日韩亚洲欧美综合| 欧美精品久久久久a| 久久综合久久久| 欧美一级片在线播放| 日韩一区二区免费高清| 免费观看亚洲视频大全| 亚洲综合日韩中文字幕v在线| 亚洲国产成人不卡| 狠狠色狠狠色综合人人| 国产精品女主播| 欧美va日韩va| 久久久久久久久久看片| 亚洲欧美日韩视频二区| 99这里有精品| 亚洲国产欧美不卡在线观看 | 久久国产精品一区二区三区四区 | 免费一区视频| 久久精品国产综合精品| 亚洲欧美日韩成人| 亚洲一区二区三区午夜| 一区二区三区高清| 日韩午夜精品| 日韩一区二区精品视频| 亚洲高清久久久| 国内自拍视频一区二区三区| 国产精品手机视频| 国产精品国产三级国产aⅴ9色| 欧美人妖另类| 欧美国产日韩一二三区| 欧美+亚洲+精品+三区| 米奇777在线欧美播放| 久久免费少妇高潮久久精品99| 亚洲一区久久久| 亚洲天堂成人| 亚洲欧美伊人| 欧美中文字幕视频| 欧美在线免费视频| 老牛影视一区二区三区| 99re6热在线精品视频播放速度| 亚洲第一区在线观看| 红桃视频亚洲| 亚洲国产日韩一区二区| 亚洲国产精品视频| 亚洲欧洲在线视频| 99精品国产热久久91蜜凸| 99视频有精品| 亚洲资源av| 久久成人综合视频| 男人的天堂亚洲在线| 亚洲国产精品尤物yw在线观看| 欧美国产精品v| 日韩一二三在线视频播|